CS 326: Programming Languages, Concepts and Implementation

Spring 2024

Syllabus
Schedule
Announcements



Instructor: Dr. Mircea Nicolescu

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

Teaching Assistant: Shuvo Kumar Paul

E-mail:shuvo.k.paul@gmail.com
Office:SEM 231-B (ECC lab)
Office hours:Friday: 9am-12pm

Lectures

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

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 23

Introduction [Lecture1] Chapter 1 ---

Jan 25

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

Jan 30

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

Feb 1

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

Feb 6

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

Feb 8

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

Feb 13

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

Feb 15

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

Feb 20

Names, Bindings and Scopes [Lecture9] Chapter 3 HW3 out - due on Feb 29

Feb 22

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

Feb 27

Control Flow [Lecture11] Chapter 6 ---

Feb 29

Control Flow [Lecture12] Chapter 6 HW4 out - due on Mar 19

Mar 5

Control Flow [Lecture13] Chapter 6 ---

Mar 7

Review [Lecture14] --- ---

Mar 12

Midterm Exam --- --- ---

Mar 19

Exam discussion --- --- ---

Mar 21

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

Apr 2

Data Types [Lecture16] Chapters 7, 8 HW5 out - due on Apr 11

Apr 4

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

Apr 9

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

Apr 11

Subroutines and Control Abstraction [Lecture19] Chapter 9 HW6 out - due on Apr 23

Apr 16

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

Apr 18

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



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 12, at 9am.
  • Final exam - scheduled for May 9, at 8am.


Created by: Mircea NICOLESCU (e-mail:mircea@cse.unr.edu)