CS 5314: Concepts of Programming Languages
Spring 2016

Dr. Barbara G. Ryder
Email: ryder 'at' cs dot vt dot edu
http://people.cs.vt.edu/~ryder
Office: KnowledgeWorks II, room 2201
Office phone: 231-2164

Syllabus

Course Information

The prerequisites include undergraduate courses in (i) data structures and algorithms, and (ii) programming languages or compilers. It is assumed that students are familiar with an object-oriented programming language such as C++ or Java. Permission of the instructor is required if you are not a Computer Science student or if you are a CS student without these prerequisites.

Resources The textbook, Programming Language Pragmatics, 4th Edition, by Michael Scott will be our basic resource; I chose this book because it can be used as a reference for both programming languages and compilers. In addition, there will be supplemental papers/tutorials/books provided online or on reserve in the library. Two other textbooks that I have found useful in the past are:

1. (S) Sethi, R., Programming Languages: Concepts and Constructs, Addison Wesley, second edition, 1996. This programming languages book is now out of print, but you might find some copies around the department. Xeroxes of relevant content will be made available to students.

2. (ASU) Aho, A.V., Sethi, R., and Ullman, J. D., Compilers: Principles, Practices and Techniques, Addison-Wesley, 1986. (compiler reference)

Class website: http://people.cs.vt.edu/~ryder/5314/index.html

Course Summary

This course is intended to introduce you to the principles of programming languages, that is, those properties or characteristics that identify a programming language as an example of the procedural, object-oriented, functional, or logic paradigm -- or as multiple-paradigm. Our goal is not to gain expertise with a particular language, but rather to understand the intrinsic differences between these paradigms and the design choices made when a new programming language is created. The ultimate goal is to make it easier for a student to learn a new language, a common experience for computer professionals.

The course will present the key aspects of logic programming in Prolog, functional programming in Scheme, and scripting languages probably using JavaScript or Python. Topics will be chosen from among the following: introduction to formal languages and automata, top-down parsing techniques, types and type systems, polymorphism and type reconstruction, lambda calculus (i.e., the formalism behind functional programming), data abstraction and its specification, models of inheritance and delegation, and concurrency. Emphasis will be on learning these topics in the context of the specific programming language paradigms mentioned above.

Expected Work and Grading

There will be three short programming assignments (one each in Prolog, Scheme and JavaScript or Python) of approximately 3 weeks duration each, a midterm and a final exam. The in-class midterm is planned for March 16th, 2016 and a 3 hour final exam on May 10th, 2016. The programming assignments will be submitted using WEB-Cat according to the instructions on the Programming Assignments webpage. These assignments will be due at midnight on a posted date. Late submission of an assignment will be permitted within 24 hours of the due date and time; however, the total points obtainable by a late assignment will be 15% than for an on-time assignment. Students with unusual extenuating circumstances have to notify the instructor in advance of their situation of the due date and time. Students can seek further explanation of an assignment grade within one week of the grades being posted, (i.e., in a timely manner).

There also will be written study homeworks assigned every two weeks which may not be graded, although answers will be posted. The written homeworks are primarily practice questions for learning the material and will be useful to study for the two exams as some questions will be designed to be similar to some of these homeworks.

The grading will be approximately on the following scale:

Class meeting time is Mondays and Wednesdays from 4:15-5:30pm. Class attendance is required and students will be responsible for what is presented in class. Plan to arrive promptly as we will start class on time.

The quickest way to contact either Dr. Ryder is through email to ryder@cs.vt.edu. We will post important, dated announcements to the entire class under the Announcements tab below, so please check it regularly. Note: announcements concerning the programming assignments will be posted on their webpage.

Honor Code

Work in this class i individual work and cannot be developed or written up with assistance from individuals other than the course TA or the course instructor. Any discussion of your program source code must be limited to these people.

Examples of honor code violations include:

Because you are expected to learn new programming languages outside of class, student interaction is encouraged regarding the understanding of a programming language and the system under which it operates, so long as there is no direct help in completing a programming assignment. It is also acceptable to discuss with others the nature of an assignment or what behavior it requests--that is, what your solution is supposed to accomplish--but you may not discuss how to achieve that goal. Note that all electronic work submitted for this course is archived and subjected to automatic plagiarism detection and cheating analysis.

Special accomodations

If any student needs special accommodations because of a disability, please contact the instructor by February 1, 2016

Contact Info
Dr. Barbara G. Ryder
Email: ryder 'at' cs dot vt dot edu
Phone: 540-231-2164
Office: Department of Computer Sceince, Virginia Tech
2202 Kraft Drive, Room 2210 (KnowledgeWorks building in the CRC)
Blacksburg, VA 24060
Office Hours: Tuesdays, 4:30pm-6:00pm, and by appointment
Preferred mode of contact: email


Md Hasanuzzaman (Hasan) Bhuiyan
part-time GTA for course
Email: mhb 'at' vt 'dot' .edu
Office: NDSSL: Network Dynamics and Simulation Science Lab
1880 Pratt Drive, Suite 2000-17 (in CRC)
Blacksburg, VA 24060
Office Hours: Thursdays 1:00-2:30pm at NDSSL address given above
Preferred mode of contact: email

last changed 12:34pm January 28, 2016 BGR.