CS 326: Programming Languages, Concepts and Implementation

Spring 2025

Syllabus
Schedule
Announcements



Instructor: Dr. Mircea Nicolescu

E-mail:mircea@unr.edu
Phone:(775) 784-4356
Office:WPEB 413
Office hours:Thursday 10:30am-1:30pm

Teaching Assistant: Parvaneh Aliniya

E-mail:aliniya.pari@gmail.com
Office:WPEB 414
Office hours:Friday 8am-11am

Lectures

Tuesday, Thursday: 9am-10:15am, DMSC 103

Required Textbook

Programming Language Pragmatics, by Michael L. Scott, Morgan Kaufmann Press, 2015.

Course Description

The course examines the fundamental principles at work in the most important programming languages, highlights the critical relationship between language design and language implementation, and devotes special attention to issues of importance to the expert programmer. The focus of the course will always be on the concepts of programming languages, while the specific languages discussed are only present to support these concepts. Students should emerge better prepared to choose the best language for particular projects, to understand and make more effective use of languages they already know, and to learn new languages quickly and completely.

Prerequisites

CS 302 (Data Structures). Good knowledge of at least one programming language (such as C++) and familiarity with data structures (such as linked lists and trees) are required.

Topics

Following are the topics that will be covered during the course, not necessarily in the order they will be discussed:
  • Introduction - The Study of Programming Languages
  • Programming Language Syntax
  • Names, Scopes and Bindings
  • Control Flow
  • Data Types
  • Subroutines and Control Abstraction
  • Data Abstraction and Object Orientation
  • Functional and Logic Languages
  • Concurrency

Assignments, Examinations and Grading

Homework assignments: There will be a number of homework assignments, some of which will include programming. The homework assignments and their due dates will be posted on the course web page. Homework assignments are due on the specified date at the beginning of the class.

Exams: There will be one midterm exam and one final exam. Both exams will be closed books, closed notes.

Class participation: The student grade includes a component for participation in class discussions. This will be evaluated according to the instructor's observations during the semester.

Grading structure: The final score will be computed as follows:
Homeworks:40%
Midterm exam:25%
Final exam:30%
Class participation:5%

Letter grades: The letter grade will be computed as follows. Some upward adjustment may occur, but do not count on it.
≥ 92:A
[88-92):A-
[84-88):B+
[79-84):B
[75-79):B-
[71-75):C+
[66-71):C
[62-66):C-
[58-62):D+
[54-58):D
[50-54):D-
< 50:F

Late submissions and make-up exams policy: No late assignments will be accepted. Permissions to take exams on other dates than scheduled will not be given, except for extreme medical emergencies.

Academic dishonesty: Students are encouraged to study together, however each student must individually prepare his/her solutions. Cheating, plagiarism or otherwise obtaining grades under false pretenses constitute academic dishonesty according to the code of this university. Academic dishonesty will not be tolerated and penalties can include canceling a student's enrollment without a grade, giving an F for the course or for the assignment. For more details, see the University of Nevada, Reno General Catalog.


References

The required textbook discusses general underlying concepts in programming languages design and implementation, while using various languages to illustrate these concepts. However, some programming languages will receive more attention during this course - the following references provide more in-depth information on these languages.
  • Scheme
    • The Scheme Programming Language, by R. Kent Dybvig, MIT Press, 3rd edition, 2003.
    • The Little Schemer, by Daniel P. Friedman and Matthias Felleisen, MIT Press, 4th edition, 1995.
    • Implementation: Petite Chez Scheme. The website also contains user guides, documentation, tutorials and links to other on-line Scheme resources.
  • Prolog
    • Programming in Prolog, by W.F. Clocksin and C.S. Mellish, Springer-Verlag, 4th edition, 1994.
    • Implementation: SWI-Prolog. Consult this website for useful documentation, tutorials and other resources on Prolog programming.
  • ML
  • Java
    • On to Java, by Patrick Henry Winston and Sundar Narasimhan, Addison Wesley, 3rd edition, 2001.
    • Any Java compiler can be used. For on-line resources on Java, see this tutorial.


Class Schedule

The topics presented and the lecture notes for each class will gradually be posted below as we cover them in the class. The assignments and their due dates will also be posted in this table. Please check this web page regularly for updates.

Date Topic Notes Readings Assignments

Jan 21

Introduction [Lecture1] Chapter 1 ---

Jan 23

Programming Language Syntax [Lecture2] Chapter 2: up to 2.2.3 ---

Jan 28

Programming Language Syntax [Lecture3] Chapter 2: up to 2.2.3 HW1 out - due on Feb 6

Jan 30

Programming Language Syntax [Lecture4] Chapter 2: up to 2.2.3 ---

Feb 4

The Scheme Programming Language [Lecture5] Scheme references ---

Feb 6

The Scheme Programming Language [Lecture6] Scheme references HW2 out - due on Feb 18

Feb 11

The Scheme Programming Language [Lecture7] Scheme references ---

Feb 18

Names, Bindings and Scopes [Lecture8] Chapter 3 HW3 out - due on Feb 27

Feb 20

Names, Bindings and Scopes [Lecture9] Chapter 3 ---

Feb 25

Control Flow [Lecture10] Chapter 6 ---

Feb 27

Control Flow [Lecture11] Chapter 6 HW4 out - due on Mar 18

Mar 4

Control Flow [Lecture12] Chapter 6 ---

Mar 6

Review [Lecture13] --- ---

Mar 11

Midterm Exam --- --- ---

Mar 18

Exam discussion --- --- ---

Mar 20

Data Types [Lecture14] Chapters 7, 8 ---

Apr 1

Data Types [Lecture15] Chapters 7, 8 HW5 out - due on Apr 10

Apr 3

Data Types [Lecture16] Chapters 7, 8 ---

Apr 8

Data Types [Lecture17] Chapters 7, 8 ---

Apr 10

Subroutines and Control Abstraction [Lecture18] Chapter 9 HW6 out - due on Apr 22

Apr 15

Subroutines and Control Abstraction [Lecture19] Chapter 9 ---

Apr 17

The Prolog Programming Language [Lecture20] Prolog references ---

Apr 22

The Prolog Programming Language [Lecture21] Prolog references HW7 out - due on May 1

Apr 24

The Java Programming Language [Lecture22] Java references ---

Apr 29

The Java Programming Language [Lecture23] Java references ---

May 1

Data Abstraction and Object Orientation [Lecture24] Chapter 10 ---



Announcements

Announcements regarding the assignments or other updates will be posted on the class web page, so please check it regularly. Also make sure to check your UNR e-mail account, as this is the address that will be used to contact you.
  • Midterm exam - scheduled for March 11, at 9am.
  • Final exam - scheduled for May 8, at 8am.


Created by: Mircea NICOLESCU (email:mircea@unr.edu)