CS 390 - Principles of Programming Languages: Syllabus

Course Title

CS 390 - Principles of Programming Languages: Syllabus

Course Description

Introduces the constructs upon which contemporary programming languages are based. Students investigate programs written in declarative and imperative programming languages including functional, logic, structured, and object-based approaches.

Prerequisite Courses

CS 310

Course Overview

Three underlying themes are used to organization the topics and outcomes in this course. The General Principles theme focuses on the fundamental concepts associated with programming languages. The Programming theme focuses on implementing programs using different programming paradigms. Finally, the Formal Theory theme focuses on the language syntax, semantics, and pragmatics from which the General Principles derive.

Course Outcomes

Upon completion of this course, learners should be able to:

  1. Describe distinguishing characteristics of declarative (functional & logical) and imperative (procedural & object-oriented) programming language paradigms and explain how these characteristics manifest in historic and contemporary programming languages.
  2. Evaluate syntactic, semantic, and pragmatic tradeoffs among the various programming paradigms and programming languages
  3. Describe the function of Language Processing Components (e.g. Scanner, Parser, etc.)
  4. Summarize the history and continuing evolution of programming languages and explain the need to continuously learn new languages throughout your career
  5. Demonstrate different forms of declaration, typing, binding, visibility, scoping, and lifetime management for various programming language constructs (e.g. variables, functions, data structures including objects, etc.)
  6. Use formal systems, including Formal Language Descriptions, Lambda Calculus, and Denotational Semantics, to explain and model various programming language concepts
  7. Develop, analyze, and compare programs written in the various Programming Paradigms
  8. Choose an appropriate programming language solution for a given programming task

Course Materials

Required Texts

Scott, M. L., (2016). Programming language pragmatics (4 th ed.). Waltham, MA: Morgan Kaufman.

Supplementary Textbook Chapters at: booksite.elsevier.com/9780124104099

Online Faculty Notes (available in the WorldClass Shell for this course)

Technology Tools

  1. A PC-compatible computer system running a version of the Windows operating system with administrator rights to install new software. Most assignments, but not all, can be completed with a Mac OS computer. http://www.regis.edu/Academics/Learning-Management-System/System-Requirements.aspx
  2. Python, SWA Prolog, Glasgow Haskell, Regis Model Assembler (Windows only), NetBeans with Java, DevC++ IDE, OCaml.

technical specifications

Pre-Assignment

Sign on to WorldClass and become familiar with the course shell navigation. Complete the Topic 1 Assignments (textbook and online readings).

Course Assignments and Activities

Weekly
Format
Topics Readings Assessed Assignments
15 8   (Textbook / Worldclass)  (% course grade)
1 1 1: Foundations T: Chapter 1; 8.1, 8.5, 9.1 – 9.3;
W: Topic 1
Topic 1 (assessed in exams)
Participation (0.5%)
2  1 2: The Imperative Paradigm
    – C Programming Language
W: Topic 2 Topic 2 Assignment (6%)
Participation (0.5%)
3 2 3: Language Processing Systems
    – Scanning
T: 2.1 – 2.2
W: Topic 3, Part I
Topic 3-I Assignment (5%)
Participation (0.5%)
4 2     – Topic 3 continued –
        – Parsing
T: 2.3.1 – 2.3.4
W: Topic 3, Part II
Topic 3-II Assignment (6%)
Participation (0.5%)
5 3     – Topic 3 continued –
        – Formal Languages
T: 2.4.1 - 2.4.3
W: Topic 3, Part III
Topic 3-III (assessed in exams)
Participation (0.5%)
6 3     – Topic 3 continued –
        – Static Semantics
T: 4.1 - 4.4, 4.6
W: Topic 3, Part IV
Topic 3-IV (5%)
Participation (0.5%)
7 4 4: The Low-level Paradigm
     – Model Assembly Language
W: Topic 4 Topic 4 Assignment (5%)
Participation (0.5%)
8 4 5: Life Cycle, Naming, Scope T: 3.1 - 3.6
W: Topic 5
Midterm (15%)
Participation (0.5%)
9 5 6: The Functional Paradigm
     – The Haskell Language
     – Lambda Calculus
T: 8.6, 11.1 - 11.6
W: Topic 5
Topic 6 Assignment (6%)
Participation (0.5%)
10 5     – Topic 6 continued – Participation (0.5%)
11 6 7: Dynamic Semantics W: Topic 7 Topic 7 Assignment (5%)
Participation (0.5%)
12 6 8: Type Systems T: 7.1 - 7.4
W: Topic 8
Topic 8 Assignment (5%)
Participation (0.5%)
13 7 9: The Logic Paradigm
     – The Prolog Language
T: 12.1 - 12.5
W: Topic 9
Topic 9 Assignment (5%)
Participation (0.5%)
14 7     – Topic 9 continued –
10: Advanced Object-Oriented

W: Topic 10 T:  10.4 - 10.6
Participation (0.5%)
Topic 10 Assignment (4%)
15 8 11: Scripting Languages
    – Shells and Javascript
T: 14.1 - 14.5
W: Topic 11
Topic 11 Assignment (5%)
Participation (1.0%)
Final Exam (20%)

Summary of Assignments and Percentage Weight:

Assignments Weighted Percentage
Weekly Participation   8%
Weekly Assignments 57%
Exams 35%
TOTAL 100 %

CCIS Policies

Review the CCIS Policies on the Regis University website.

Department Policies

The Computer Science department reserves the right to review all assessments in this course at any time and revise the assigned grade based on a reassessment of the material, which may include an oral examination by the department.

OTHER INFORMATION

NOTE TO LEARNERS: On occasion, the course facilitator may, at his or her discretion, alter the Learning Activities shown in this Syllabus. The alteration of Learning Activities may not, in any way, change the Learner Outcomes or the grading scale for this course as contained in this syllabus. Examples of circumstances that could justify alterations in Learning Activities could include number of learners in the course; compelling current events; special facilitator experience or expertise; or unanticipated disruptions to class session schedule.