Concepts of Programming Languages

Course Description

Concepts of block-structured, object-oriented, functional, logic, and concurrent programming languages. Comparative study of syntactic and semantic features of these languages and writing programs using them. Prerequisite: Grade of at least C- in CSC 330.

Syllabus

Student Learning Outcomes, Goals, Objectives:

The goal of this course is to deepen students' understanding of how programming languages are designed, evaluated, and implemented, and to strengthen their ability to express ideas and construct algorithms across different paradigms. The course's objectives are to introduce the history of programming languages, formal methods for describing syntax and semantics, and core concepts such as names, bindings, scope, data types, control flow, and subprogram implementation, while examining imperative, object-oriented, functional, and logic paradigms and the trade-offs that shape language design.

Students successfully completing this course will be able to:

  • describe and compare the major programming language paradigms - imperative, object-oriented, functional, and logic - along with the trade-offs that shape their design;

  • apply formal methods, including formal grammars, to specify and analyze the syntax of programming languages;

  • analyze binding, scoping, and typing rules, and predict their effect on program behavior;

  • explain core language concepts such as names, bindings, scope, data types, and control flow structures;

  • explain how subprograms are implemented and how abstraction mechanisms such as abstract data types (ADTs) and encapsulation support program design;

  • evaluate language support for concurrency and for alternative programming paradigms;

  • select and use programming languages more effectively based on an understanding of their design and implementation trade-offs.

Course Grading Information:

Activity/Performance Measure

Percentage/Points

Assignments

25%

Project

15%

Tests

60%

Grading Scale

Percentage

Letter Grade

94-100

A

90-93

A-

87-89

B+

84-86

B

80-83

B-

77-79

C+

74-76

C

70-73

C-

67-69

D+

64-66

D

60-63

D-

<59

F

Attendance/Participation:

Students are required to attend all classes. Accumulated absences more than 30% of total class hours without preapproval, it may lead to failure in the course.

Course Materials Purchased by the Students:

  • Robert W. Sebesta, Concepts of Programming Languages, 12th Edition. Pearson, 2019. ISBN: 978-0-13-499718-6.

  • C++ How To Program, by Deitel & Deitel, Edition 10th, ISBN: 0-13-444823-5. Ed. 9th may be fine. There are online versions.

Scholarly Perspectives

This course engages diverse scholarly perspectives to develop critical thinking, analysis, and debate and inclusion of a reading does not imply endorsement.