CS 326: Programming Languages, Concepts and Implementation

Fall 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, WPEB 130

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



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


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