ITCS 4102: Programming Languages
ITCS 5102: Survey of Programming Languages
Please note that this syllabus is subject to change over the course of the semester. Updates will be made available on the course website.
Course mode
Face-to-Face
Course Syllabus
ITCS 4102: Formal definition of programming languages, including specification of syntax and semantics. Evolution of programming languages and language design principles. Structural organization, control structures, data structures and types, name visibility, binding times, parameter passing modes, subroutines, co-routines, and tasks. Functional programming, list processing, logic programming, object-oriented programming systems.
ITCS 5102: This course provides an advanced overview of programming languages through general principles combined with details about many modern languages. Major languages covered include C, C++, Java, Ada, Lisp, Haskell, and Prolog; many other languages are discussed briefly. The course also provides extensive coverage of implementation issues, the theoretical foundations of programming languages, and a large number of exercises. The course will prepare students for advanced compiler courses and for the theoretical study of programming languages.
Course Topics (tentative)
Introduction
Language Design Criteria
Functional Programming (LISP and Haskell)
Logic Programming (Prolog)
Object-Oriented Programming (C++)
Syntax
Semantics
Data Types
Control I – Expressions and Statements
Control II – Procedures and Environments
Abstract Data Types and Modules
Formal Semantics and Parallel Programming [Optional]
Recommended Textbook(s)
Kenneth C. Louden and Kenneth A. Lambert, Programming Languages: Principles and Practices, 3rd Edition. Course Technology, Cengage Learning, 2012, ISBN 13 978-1-111-52941-3. [Textbook, Several topics, recommended]
Simon Thompson, Haskell: The Craft of Functional Programming, Addison-Wesley. [optional]
Joyce Farrell, Object-Oriented Programming Using C++ | Edition: 4, Cengage Learning. [optional]
Ivan Bratko, PROLOG Programming for Artificial Intelligence | Edition: 4, Pearson (UK). [optional]
Michael L. Scott, Programming Language Pragmatics, 3rd edition, Elsevier Science, ISBN 9780123745149 [Available at Atkins Library]
Graham Hutton, Programming in Haskell, 1st Edition, Cambridge University Press, ISBN 9780521692694. [optional]
Tentative Grading Scheme (Check Canvas)
Homework 20%
Activity 10%
Quiz 15%
Midterm 10%
Project 25%
Final exam 20%
Course Materials
Lectures and course materials, including presentations, tests, exams, outlines, and similar materials, are protected by copyright. You are free to take notes and make copies of course materials for your own educational use. However, you may not, nor must you allow others to reproduce or distribute lecture notes and course materials publicly without my express written consent.