CS 3314 - Programming Languages Theory and Practice
Theoretical Basis of Programming Languages and Implementation
Course Information
Instructor: Muhammad Ali Gulzar
Office: 4106 Gilbert Place (220 Gilbert Street)
Lecture : TR 3:30 PM - 4:45 PM in MCB 126
Office Hours: Wednesday 10AM to 11AM (or by appointment)
Recommended Textbooks:
- Concepts of Programming Languages, 12th Edition, Robert W. Sebesta
- Introduction to the Theory of Computation, 3rd Edition, Michael Sipser
Teaching Assistants
Teaching Assistant | Office Hours |
---|---|
Ahmad Humayun | TBD |
Course Description
This course introduces the theoretical and practical issues in the design, implementation, and application of programming languages. Topics will vary from basic to advanced in areas that focus on the theoretical basis of programming languages (e.g., formal languages, computability theory, etc.), their main building blocks (e.g., type theory, language design, standard syntax, notations, control flow features, data representation, language implementation, etc.), and their modern applications (functional & logic programming, language interoperability, etc.).
Learning Objectives
Having successfully completed this course, the student will be able to:
- Employ theoretical principles to reason about programming language properties.
- Apply formal language concepts in designing solutions to practical problems.
- Describe unsolvable computing problems.
- Understand basic language lexical, syntactic, and semantic characteristics.
- Leverage the power and strengths of different programming language paradigms, including imperative, object-oriented, functional, and logic.
- Intermix multiple languages when solving practical problems.
Course Schedule
Week | Lecture | Topic | Description | Reading | Milestones |
---|---|---|---|---|---|
1 | Aug 27 | Introduction | Why are we studying programing languages? | ||
Aug 29 | Language Syntax | PL and Regular Expression | |||
2 | Sep 3 | Language Syntax | Lexical Analysis and Regular Expressions | Chapter 1 (ITC) | |
Sep 5 | Language Syntax | Finite Automata | Chapter 1 (ITC) | ||
3 | Sep10 | Language Syntax | DFA and NFA | Chapter 1 (ITC) | |
Sep 12 | Conference Travel / Guest Lecture / Project setup | Homework 1 Due on Sep 13th | |||
4 | Sep 17 | Conference Travel / Guest Lecture / Project setup | |||
Sep 19 | Language Syntax | Regular Languages and Grammars | Chapter 2 (ITC) | Project 1 Due on Sep 20th | |
5 | Sep 24 | Language Syntax | Pushdown Automata | Chapter 2 (ITC) | |
Sep 26 | Language Syntax | Context Free Grammars and Parsers | Chapter 2 (ITC) | Homework 2 Due on Sep 27th | |
6 | Oct 1 | Turing Machines | Decidibility , Reducibility | Chapter 4, 5 (ITC) | |
Oct 3 | Midterm Practice | Decidibility , Reducibility , Midterm Practice | Project 2 Due on Oct 4th | ||
6 | Oct 8 | Midterm exam during lecture |
|||
Oct 10 | Semantic Analysis | Static Semantics and Dynamic Semantics | Chapter 3 | Homework 3 Due on Oct 11th | |
8 | Oct 15 | Semantic Analysis | Static Semantics and Dynamic Semantics | Chapter 3 | |
Oct 17 | Name, Scope, Binding | Type Checking and Binding | Chapter 5 | Project 3 Due on Oct 18th | |
9 | Oct 22 | Name, Scope, Binding | Type Checking and Binding | Chapter 5 | |
Oct 24 | Functional Programming | Lambda Calculus | Chapter 15 | ||
10 | Oct 29 | Functional Programming | Lambda Calculus | Chapter 15 | |
Oct 31 | Functional Programming | Chapter 15 | Homework 4 Due on Nov 1st | ||
11 | Nov 5 | Logic Programming | Part 1: Introduction | Chapter 16 | |
Nov 7 | Logic Programming | Part 2: Features and Programming | Chapter 16 | Project 4 Due on Nov 8th | |
12 | Nov 12 | Logic Programming | Part 3: Backtracking and advanced features | Chapter 16 | |
Nov 14 | Subprograms | Chapter 9,10 | Homework 5 Due on Nov 15th | ||
13 | Nov 19 | Subprograms | Chapter 9,10 | ||
Nov 21 | Subprograms | Parameter Semantics | Chapter 9,10 | Project 5 Due on Nov 22nd | |
14 | Nov 26 | Thanksgiving Break |
|||
Nov 28 | Thanksgiving Break |
||||
15 | Dec 3 | Prog. Language support for distributed computing | RMI, Traits, RPCs | ||
Dec 5 | Final Exam Review | ||||
16 | Dec 10 | Final exam during lecture |
Grading Policy
- 50% — Five projects.
- 25% — Five Homeworks.
- 15% — Final Exam
- 10% — Midterm Exam
Grading for the course is based on the distribution of credit shown in the table above. Final letter grades for the course will be determined using the following grading scale, based on the percentage of possible points achieved:
A | A- | B+ | B | B- | C+ | C | C- | D+ | D | D- | F |
---|---|---|---|---|---|---|---|---|---|---|---|
>= 93% | >= 90% | >= 87% | >= 83% | >= 80% | >= 77% | >= 73% | >= 70% | >= 67% | >= 63% | >= 60% | >= 0% |
Group work policy:
All homework assignments and exams are individual work.
Lateness policy:
Late assignments can be submitted with a points deduction: 1 day late–10%; 2 days late–20%; 3 days late–30%; after 3 days or 72 hours, no further extension is possible, except for documented emergencies and special arrangements.
No grade can be appealed more than 30 days after the release.
If a serious illness prevents you from taking a quiz or exam, notify your instructor in advance of the exam; you must also request absence verification through the Dean’s office. No makeup exams will be given without absence verification. Also, note that only the Dean’s office can give permission for you to reschedule your final examination, and no makeup final will be given without the Dean’s approval.
Submission policy:
- All programming assignments have to be submitted as a single zip archive.
- At your discretion, include either all assignment files or only the ones that contain your solution; when grading, we will copy all your submitted files on top of the provided assignment files.
- If an assignment is done in a group, only one submission per group is required (please, make sure to include the names of both group members in the provided README file)
- Important: Please, make sure to carefully check that the submitted zip archive contains the correct files; incorrectly submitted assignments will incur a steep grade deduction and may be left ungraded altogether.
Virginia Tech Honor Code Applies
The Undergraduate Honor Code pledge that each member of the university community agrees to abide by states:
“As a Hokie, I will conduct myself with honor and integrity at all times. I will not lie, cheat, or steal, nor will I accept the actions of those who do.”
Students enrolled in this course are responsible for abiding by the Honor Code. A student who has doubts about how the Honor Code applies to any assignment is responsible for obtaining specific guidance from the course instructor before submitting the assignment for evaluation. Ignorance of the rules does not exclude any member of the University community from the requirements and expectations of the Honor Code.
For additional information about the Honor Code, please visit: https://www.honorsystem.vt.edu.
Mental Health and Well-being
Supporting the mental health and well-being of students in this class is of high priority to the instructor and Virginia Tech. If you are feeling overwhelmed academically, having trouble functioning, or are worried about a friend, please reach out to any of the following offices:
- Cook Counseling:
- 540-231-6557 to schedule an appointment and/or 24/7 crisis support
- ucc.vt.edu for more information
- Dean of Students Office:
- 540-231-3787 for general advice
- 540-231-6411 for after-hours crisis
- dos.vt.edu for more information
- Hokie Wellness:
- hokiewellness.vt.edu for more information about health and wellness workshops and consultations
- Services for Students with Disabilities (SSD):
- 540-231-3788 or ssd.vt.edu for more information about accommodations and other disability-related supports
For a full listing of campus resources check out well-being.vt.edu.
Please also feel free to speak with the instructor, who will make an effort to work with you.
Academic Accommodations
Virginia Tech welcomes students with disabilities into the University’s educational programs. The University promotes efforts to provide equal access and a culture of inclusion without altering the essential elements of coursework. If you anticipate or experience academic barriers that may be due to disability, including but not limited to chronic medical conditions, Deaf or hard of hearing, learning disability, mental health, or vision impairment, please contact the Services for Students with Disabilities (SSD) at 540-231-3788, ssd@vt.edu, or visit ssd.vt.edu.
If you have an SSD accommodation letter, please meet with your instructor privately during office hours as early in the semester as possible to discuss implementing your accommodations. You must give reasonable notice to implement your accommodations, which is generally 5 business days and 10 business days for final exams.
Technical Support
-
Technical Support: For technical support assistance regarding any problems with Canvas, Zoom, or e-mail, please contact 4Help. For questions related to programming assignments or homework, ask questions on Piazza, where the instructor or one of the TAs can provide answers.
-
Canvas Privacy Policy: http://www.canvaslms.com/policies/intl-privacy