Develops concepts of high-level programming languages. Topics include compilers, interpreters, formal syntax, and complexity. Syntax and semantics of several existing programming languages are studied. Prerequisite: C.S. 3316. (2nd)
Expectations:
E1. Students have extensive programming experience in at least two different programming languages. (CS 2106, CS 2116, CS 2546)
E2. Students have exposure to the four primary programming paradigms: imperative, object-oriented, functional, and logical. (CS 3316)
Course Outcomes:
R1. Students know the significant historical developments in programming language technology. (CS/SE 8)
R2. Students understand the effects of scale on programming methodology. (CS/SE 3)
R3. Students understand the concept of a virtual machine and know the advantages/disadvantages of using a virtual machine. (CS/SE 3, CS 6)
R4. Students can compare and contrast interpreting a language and compiling a language. (CS/SE 3, CS 6)
R5. Students can describe the process of language translation. (CS/SE 15)
R6. Students understand the fundamental ideas of declarations and data types and their implementation in a programming language. (CS/SE 3, CS/SE 15)
R7. Students understand the fundamental idea of abstraction (routines, parameters, libraries,...) and its implementation in a programming language. (CS/SE 3, CS/SE 15)
R8. Students understand the concept of object-oriented programming and can apply object-oriented methodologies to problem solving exercises. (CS/SE 3, CS/SE 15)
R9. Students understand the concept of functional programming and can apply functional methodologies to problem solving exercises. (CS/SE 3, CS/SE 11)
R10. Students have written several programs in a functional language. (CS/SE 9)
R11. Students understand the concept of logical programming and can apply logical methodologies to problem solving exercises. (CS/SE 3, CS/SE 11)
R12. Students have written several programs in a logical language. (CS/SE 9) |