![]() |
|
Instructor: Dr. Mircea Nicolescu | ||||||||
|
||||||||
Teaching Assistant: Parvaneh Aliniya | ||||||||
|
||||||||
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: | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
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:
Letter grades: The letter grade will be computed as follows.
Some upward adjustment may occur, but do not count on it.
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. |
|
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. |
|
Created by: Mircea NICOLESCU (email:mircea@unr.edu) |