Skip to main content
Search Context

CMSC 331 Syllabus

CMSC 331 Syllabus

Programming Languages


CMSC 202 and CMSC 203 with a grade of ‘C’ or better.


This course examines the theory, design and implementation of programming languages and provides students with an introduction to programming languages that are likely to be new to them. Topics include specifications of syntax and semantics, declarations, binding, allocation, data structures, data types, control structures, control and data flow, concurrency, and the implementation and execution of programs. The major language paradigms will be described and explored, including imperative, object-oriented, functional, logic programming, concurrent and others. Programming projects will provide experience in several languages.

Course Outcomes

Each student will:

  • Understand the strengths and limitations of various programming language paradigms, including imperative, logic, functional, and object-oriented, and their implications in software development.
  • Evaluate the benefits and drawbacks of different programming language features, considering their impact on ease-of-use, reliability, and efficiency in software design and development.
  • Apply regular expressions and context-free grammars to define and describe the syntax and structure of programming languages.
  • Comprehend the compilation process that transforms a high-level programming language into assembly language, including the stages involved and the role of compilers in this transformation.
  • Gain practical experience in writing small programs using a functional programming language, enabling exploration and understanding of functional programming concepts and techniques.
  • Develop hands-on proficiency in implementing an interpreter, translator, or compiler for a simple programming language, providing practical insight into language processing and the translation of code into executable form.

Student Outcomes

  Level Of Emphasis
ABET Outcome Low Medium High
Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions. X    
Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.   X  
Communicate effectively in a variety of professional contexts. X    
Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles. X    
Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline. X    
Apply computer science theory and software development fundamentals to produce computing-based solutions.     X



Sebesta, R. (2019). Concepts of Programming Languages. 12th Edition. Pearson. ISBN: 9780135102268



  • Syntax Analysis
  • Semantics
  • Lexical Analysis
  • Parsing
  • Parser Generators
  • Language Implementation Models
  • Imperative Programming
  • Functional Programming
  • Logic Programming
  • Object Oriented Programming


30% Programming Assignments (3-4)
20% Homework Assignments (3-4)
25% Quizzes and/or Group Work
25% 2 Exams

Updated June 19, 2023 by JD and JK