CS365 -- Programming Languages and Systems

Brad Vander Zanden


Professor: Brad Vander Zanden


NameOfficeemailOffice Hours
Ryhan PathanMK 614rpathan@eecs.utk.eduT 2:15-3:15
R 3:30-4:30
Mohammad AhmadzadehMK 314mahmadza@vols.utk.eduT 10-11
John ReynoldsMK 416jreyno40@vols.utk.eduM 1:3-3
F 12-1:30

Class Attendance

Class attendance is highly recommended for two reasons. First, we will be experimenting with a flipped classroom arrangement whereby we have interactive discussions about material and work in-class problems in groups, and it is essential that you be in class in order to benefit from this type of instruction. Second, I will be going over solutions to some of the homework problems, so you can get easy credit for about 30% of your homework if you are consciousness about coming to class.


Required : Programming Language Pragmatics, 3rd Ed. Michael L. Scott.

Optional : Any reference book on Java. If you want suggestions I would try either Java2: A Beginner's Guide or Java2: The Complete Reference, both of which are written by Herbert Schildt.

If you're looking to save money and want an online source check out the Java tutorial site. I also make extensive use of the Java API site. It's next to impossible to remember all the methods that each of Java's classes offers and it's typically easier to click to the API rather than reach for a book.

What's My Grade?

Grades will be calculated as a weighted average of the following four items. These weights are subject to change at the instructor's discretion:
        Quizzes                         20%
	Homework Assignments		30%
	Midterm 			25%
	Final				25%
The quizzes will be blackboard quizzes that cover material presented in the video lectures/class notes that you are expected to have reviewed before coming to class and that are further expounded upon in class. Quizzes will become available at 2pm the day of class and will be due by 12:30pm on Thursdays for Tuesday quizzes and 2pm on Saturdays for Thursday quizzes. The quizzes are designed as quick homework exercises that force you to quickly review the material after class.

If you have watched the video lectures and come to class then you should find the quizzes relatively easy to complete. If you simply read the class notes, there is a good chance you will be able to complete the quizzes, but the video lectures will often add additional details, so you may not be able to answer every question by simply reading the notes. Additionally, you will probably find it problematic to answer the problems if you do not watch the videos.

In computing your quiz grades I throw out your 3 lowest quiz grades. In practice I make the computation as follows. If there are n quizzes, then your quiz percentage is determined by dividing your total quiz grade into n-3 quizzes. For example, if there are 23 quizzes worth 20 points each, and your cumulative score on the quizzes is 383, then your final quiz percentage will be 383/400, rather than 383/460. I throw out the 3 lowest quiz grades because I realize things come up, such as an illness, something at work, the need to attend a conference, multiple exams in one week, etc., that may preclude you from completing a quiz. Because I have built in a 3 quiz cushion, please do not ask for any extensions. The answer will be no.

Unless otherwise instructed, you are allowed to submit homework assignments up to 2 days late, but will receive a deduction of 10 points for each day late that you submit. Hence if you submit 1 day late you can only get a maximum of 90 points and if you submit 2 days late you can only get a maximum of 80 points. Conversely, if you submit your homework more than 24 hours in advance of the deadline, you will receive 5 points of extra credit.

What Topics Does The Course Cover?

  1. New Language Paradigms

  2. Programming Language Design (e.g., exceptions, modules, generics)

  3. Implementation issues (e.g., garbage collection, virtual methods)