CS 320 Programming Languages • 5 Cr.


This course is an introduction to the design and implementation of programming languages. The course explores organization and structure of programming languages, run?time behavior and requirements of programs, and programming language specification. The course teaches the programming models underlying different programming paradigms such as functional, logic, scripting and object-oriented languages. Prerequisites: CS 300 with a C or better, and admission to BC CS program, or instructor's permission.


After completing this class, students should be able to:

  •  Distinguish various programming language paradigms 
  •  Choose a suitable programming paradigm and language for a given problem or domain 
  •  Use formal grammars to specify the syntax of languages 
  •  Give a formal semantics for a small language 
  •  Construct new data types, abstractions, encapsulations in various languages 
  •  Apply the program paradigms to simple problems 
  •  Explain design concepts, design alternatives and trade-offs, and implementation considerations for scope, binding, data types, expressions, control structures, subprograms, abstract data types, objects, concurrency structures, and exception handling in modern programming languages 
  •  Explain how programming language implementations typically organize memory into global data, text, heap, and stack sections and how recursion and memory management map to this memory model