EECS 3301

Programming Language Fundamentals



Syllabus

Notes

Notices

Dates

FAQs

Contact Info




Course Description

This course is offered quad speed in the S2 term. It is a compressed version of our standard course and needs full time dedication. Lecture attendance and teamwork are essential for the successful completion of the course. Do not register for this quad speed course if you have a job or other commitments during the course period since there are no provisions for absences.

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. A 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 DB 0001)

Tests

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 

     Available     

Due

  Assignment A1
   ALG1&ALG2  

15%

June 19

  June 24 (23:59) online submission 

  Assignment A2 

10%

June 21

 June 26 (11:30) hand-in at lecture start 

Project P1
Version A
Version B

35%

June 26

 July 6 (23:59) online submission

  Midterm Test T1 

20%

N/A

  June 27 (12:00~14:00) in-class test

  Final Test T2 

20%

N/A

 July 10 (11:30~14:30) in-class test

Text

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.