Programming Languages (COS 360/Fall 2024)
Instructor:
James Quinlan
Course description
Principles and techniques of high level programming language specification, including syntax and semantics, and implementation methods.
Languages are considered as formal constructs representing computable functions and the course presents basic results of computability theory. Methods of recognition for regular and context free languages, the functional alternative to the state based imperative paradigm, use of parse trees as control constructs, and concurrent programming synchronization primitives are also covered.
COS 360 is required for the Computer Science major (see all
requirements for Computer Science).
Course Syllabus (pdf)
Prerequisites
Grade of C or higher in:
- COS 280 - Discrete Mathematics II
- COS 285 - Data Structures
Learning Outcomes
By the end of this course, students will be able to:
- Program in different language paradigms and evaluate their relative benefits
- Describe the importance of understanding different programming languages and constructs
- Explain the fundamental characteristics of the various programming language domains
- Explain the structural differences among various programming language using various evaluation criteria
- Discuss the influences on modern programming language design
- Identify the various programming language categories
- Explain the programming language design trade-offs
- Write basic algorithms in functional programming language
Textbook
Additional Resources
- Programming Language Pragmatics by Michael L. Scott: This book covers syntax and semantics of programming languages, implementation methods, and the basics of computability theory. It also covers parsing and recognition of regular and context-free languages, and functional programming.
- Concepts of Programming Languages by Robert W. Sebesta: This textbook provides a comprehensive introduction to programming language concepts, including syntax, semantics, and implementation methods. It also covers recognition of regular and context-free languages, functional programming, and concurrent programming.
- Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman: This is a classic textbook that covers the theory and implementation of compilers, including lexical analysis, parsing, code generation, and optimization. It also covers the theory of computation, regular and context-free languages, and concurrent programming.
Meetings
Communication
Please communicate through
Brightspace.
Grading
Grades will be based on assignments, quizzes, discussion threads on Brightspace, attendance/participation, a midterm,
and a final exam with the following percentages:
- 30%: Exercises and assignments
- 20%: Quizzes
- 10%: Project
- 10%: Attendance and Participation
- 20%: Midterm Exam
- 10%: Final Exam
Late policy
Unless otherwise noted, weekly homework assignments will be due on Thursday by 11:59pm.
Assignments must be prepared in LaTeX and submitted through Brightspace under the associated assignment.
Late submissions will not be accepted.
In recognition of the fact that there may unforeseen circumstances that prevent you from submitting some assignments, the two lowest homework grades will be dropped.
Tips for Success
- attend all class meetings
- read the material before coming to class
- complete assignments by the due dates specified
- create a study and/or assignment schedule to stay on track
- read announcements
- communicate regularly with your instructor and peers
- read and respond to course email messages as needed
- utilize USM's Online Student Support Services
Past Student Projects (Fall 2023)