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:



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

Projects
Homeworks
Final Exam
Midterm Exam


  • 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:
  • 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