CENG 212

Concepts of Programming Languages

In this course, the fundamental concepts of programming languages and different programming paradigms will be covered. Students will gain knowledge in the following areas: Introduction to Programming Languages: The history of programming languages, types, and fundamental features. Programming Language Syntax: The structure of programming languages, syntax rules, and structural elements of a language. Names, Scopes, and Bindings: Relationships between variables, functions, and other constructs, scope concepts, and how bindings work. Control Flow: Conditional statements, loops, and control structures for managing program flow. Functional Languages (Introduction to Scheme): Functional programming paradigm, features of functional languages, and an introduction to the Scheme language. Data Types: Definition of data types, basic data structures, and type conversions. Subroutines and Control Abstraction: Use of subroutines, functions, and procedures, and control abstraction techniques. Logic Languages (Introduction to Prolog): Logic programming paradigm, fundamentals of Prolog, and practical applications. Data Abstraction and Object Orientation: Object-oriented programming, classes, objects, inheritance, and abstraction. Throughout the course, students will be exposed to how various programming languages are used in practice, as well as a comparison of languages from different paradigms. Additionally, essential programming skills, such as understanding the compilation and execution phases of a program and writing high-level functions, will be developed.

Course Objectives

The aim of this course is to teach students the fundamentals of programming languages from different paradigms. Students will be able to understand the concepts of syntax, scope, and binding in the context of programming languages and write programs based on these concepts. Additionally, they will gain knowledge of functional and logic programming languages and learn the basic concepts related to these paradigms through practical applications. By the end of the course, students will have the skills to easily learn a new programming language and write high-level functions.

Recommended or Required Reading

  • M. L. Scott, Programming Language Pragmatics (4th Edition), Morgan Kaufmann, 2016.
  • R. W. Sebesta, Concepts of programming languages (11th Edition), Pearson, 2016.

Learning Outcomes
1. Being able to use languages belonging to different programming paradigms.
2. Demonstrating the ability to easily use a new programming language.
3. Being able to explain the compilation and execution phases of a program.
4. Being able to write high-level functions.

 

Topics
Introduction to Programming Languages
Programming Language Syntax
Names, Scopes, and Bindings
Control Flow Structures
Functional Languages (1)
Functional Languages (2)
Midterm Exam
Data Types (1)
Data Types (2)
Subroutines and Control Abstraction (1)
Subroutines and Control Abstraction (2)
Logic Programming (1)
Logic Programming (2)
Data Abstraction and Object Orientation

Assessments

Midterm 40%

Homework 20%

Final 40%

Instructor(s)

Assistant Professor / Vice Chair