CMSC 331 Programming Languages - Fall 2022


MoWe 4:00-5:15p


Roberto Yus [ryus at umbc dot edu]

  • Office: ITE 342
  • Office Hours: Office Hrs: MoWe 5:30-6:30p (or virtually by appointment)

Teaching Assistants

  • Sachin Phogat

TA Office Hours: TBD.

Course Description

This course examines the syntax and semantics of programming languages. Topics include: history and fundamentals of programming languages, formal specifications of syntax and semantics; the implementation and execution of programs; and object-oriented, functional, and logic programming. Programming assignments and projects will provide experience in a number of languages.

Prerequisites: You must have completed CMSC 202 and CMSC 203 with a grade of C or better.

Learning Objectives

  • Understand how programming languages have and continue to evolve
  • Learn about formal definition and specification of programming languages
  • Learn about different paradigms, and gain some experience in several
  • Study how programming languages are implemented
  • Experience new ideas that are appearing in programming languages


BlackBoard will be the primary channel for disseminating information and course materials. BlackBoard will be used to post student lab grades and to support course discussion forums. If you have difficulty accessing the CMSC 331 Blackboard site, e-mail your instructor.

Discord will be used for discussions and general questions about course material, and for general questions about programming and tools. A discussion channel will be created for each project in this course. You can, and should, post questions on the discussion forum to be answered by your fellow students and/or TA and professor. General questions (i.e., anything that another student may also be wondering about) should be posted here, rather than sent to the professor and TA. Responses posted by students to questions on BlackBoard must follow the academic integrity guidelines outlined below, so it is okay to post about questions about the assignment, resources you are using, clarifications to the question, and general approaches—just do not post code (either in questions or answers).