EECS 3301

Programming Language Fundamentals






Contact Info

Course Description

This course will be held in the Summer D2 term. The course is a compressed version of our standard course.

The topic of programming languages is an important and rapidly changing area of computer science. This course introduces students to the basic concepts and terminology used to describe programming languages. Instead of studying particular programming languages, the course focuses on the linguistics of programming languages, that is, on the common, unifying themes that are relevant to programming languages in general. The algorithmic, or procedural, programming languages are particularly emphasized. Examples are drawn from early and contemporary programming languages, including Fortran, Algol 60, PL/I, Algol 68, Pascal, C, C++, Eiffel, Ada and Java.

This course is not designed to meet the needs of the student who wishes to learn to program in a particular programming language. However, there will be individual and group assignments to implement certain algorithms in different programming languages, e.g. C/C++, Java, JavaScript, Tcl/Tk, Lisp. Any student who completes this course should be able to learn any new programming language with relative ease.

Topics may include the following.
  •     Classification of programming languages: language levels, language generations, language paradigms.
  •     Programming language specification: lexical, syntactic, and semantic levels of language definition.
  •     Data, data types, and type systems; simple types, structured types, type composition rules.
  •     Control primitives, control structures, control composition rules.
  •     Subprograms: functions and procedures; argument-parameter binding; overloading.
  •     Global program structure: modules, generic units, tasks, exceptions.
  •     Object-oriented language features: classes, encapsulation, inheritance, polymorphism.
  •     Critical and comparative evaluation of programming languages.

Hours (check the Dates section, too)

Lectures: M T W R 11:30-14:30 (YK PSE 321)


There will be a midterm test T1 and a final test T2. The final test T2 will mainly focus on the second part of the course (after the midterm test T1) but may also include material from the first part of the course (before the midterm test T1.)

Assignments and evaluation


  Percentage of final grade 



  Assignment A1  


July 11 

  July 16 (23:59) online submission 

  Assignment A2 


July 13

 July 18 (11:30) hand-in at lecture start 

Project P1
Version A
Version B


July 18

July 26 27 (23:59) online submission

  Midterm Test T1 



  July 19 (11:30~14:30) in-class test
12:00-14:00 SLH E

  Final Test T2 



 July 28 (11:30~14:30) in-class test
11:30-14:30 SLH E


Title/Edition: Concepts of Programming Languages, 11th Edition
Author: Robert W. Sebesta
ISBN-13: 9780133943023
Publisher: Addison Wesley, 2016.

Title/Edition: Programming Languages Pragmatics, 4th Edition
Author: Michael Scott
ISBN-13: 9780124104099
Publisher: Elsevier, 2015.

Instructions about the main/supplementary textbook use will be provided in class

Other reference materials:

The Java Language Specification, Java SE 8 Edition, by James Gosling, Bill Joy, Guy Steele and Gilad Bracha.