Computer Science 320
Programming Languages

Last updated: 8/18/2022

Crashing Policy:

I may take students from the waitlist, up to the advertised capacity. I may check prerequisites (or equivalent courses) if there is a sufficiently large wait list. If the university records do not indicate that you meet the prerequisites (a CS108/CS160 equivalent), be prepared to provide evidence of appropriate preparation for the class (or you will be disenrolled).
Show up in class on the first day; I'll be passing around a list for everyone (registered students and those on the waitlist) to sign up. It will probably be 8/30/22 when I make the last of the waitlist additions (while I can still drop students for lack of prerequisites, so get on the waitlist right away).

Here is a downloadable text file containing some links and hints pertaining to Accessing Edoras, including tutorials and software.

Most of the chapters of the lecture notes (and all of the supplemental material) are available only from CalCopy, but I've included chapter0 and chapter1 here, in case you want to wait until after the drop deadline to purchase the notes.

Here is a downloadable text file containing some lecture notes pertaining to the Course Overview (our first lectures).

Here is a downloadable text file containing some lecture notes pertaining to Chapter 1 of Sebesta.

Syllabus Information:

Concepts of Programming Languages (ISBN 0136073476) Robert W. Sebesta NINTH Edition (you can use the 12th edition, but it is FAR more expensive, and the page numbers and problem numbers in my lecture notes are keyed primarily to [only] the 9th hardcopy edition)*. Go to and enter ISBN 0-13-607347-6 to get a huge list of prices, delivery times, etc. from various outlets. Or just go there directly by clicking the middle mouse button here. These should be far better prices than what the bookstore will offer (if they are even stocking the ninth edition at all).
* My notes also include page numbers for the electronic version of the 12th edition, but these are wildly different from the physical text numbers.
A collection of lecture notes, annotated programs, and diagrams presented in class.
(available at Cal Copy (6367 Alvarado Court #104, 619-582-9949) as a xeroxed reader)

Course Content:
Programming Language History, Syntax and Semantics, Lexical Analysis, Syntax Analysis, Names, Bindings, Scopes, Data Types, Control Constructs, Function Invocation, Recursion, Functional Programming, and details of specific programming languages.

CS160 (formerly CS108) is a sufficient prerequisite; if you have already (or are concurrently) taking CS 240/237 (Assembly Language), you will find that this will deepen your understanding.

Assignments will comprise 35% of your grade, the final will be worth 40%, and the midterm will account for 25% of your grade. says that our final is scheduled for Thursday, December 15 (2022), in our normal classroom, from 1pm to 3pm.

Homework and programming assignments are intended to help you learn. Talking over your ideas and problems with other people in the class is very helpful. You may discuss ideas, but you must do your own work and write up your own solutions and programs. In particular, you may NOT work on an assignment (or a program) as a team.

Using another person's work is cheating. Copying a program from a book is plagiarism, just like copying from a paper for a humanities class, unless you give an appropriate citation. If you are in doubt about where the border line is for our assignments, ASK ME. It should go without saying (but past experience suggests saying it) that copying on exams, homework, or other forms of cheating will be dealt with severely. Automatic failure of the course is guaranteed in such cases, and sanctions can include expulsion from the university. If an assignment is copied (or developed as a team), BOTH parties will fail the course (so, if someone asks to copy your work, point them at this paragraph :-)

Written assignments are due at the BEGINNING of class on the day specified on the assignment. Programming assignments will be collected electronically. To maintain fairness and uniformity of grading, I cannot accept late assignments. Similarly, there will be no make-up exams. In unusual circumstances (to be determined by me), you might be allowed to take an oral makeup at the end of the semester. If you know in advance that you will miss an exam, see me about it in advance. Note the date of our final exam now; don't make plans that conflict with the final. Note in particular that the university policy described in prohibits taking the final early.

This is a good place to stop reading. What follows are mandatory statements the university forces every instructor to include. The statements found in each of these policies are NOT my words!

Obligatory "COVID insanity statement."
The following is what we were told to announce at the start of the semester. Be aware that the administration seems to modify the policy on a weekly, if not daily, basis.
"Effective Fall 2021, students who register for face-to-face classes are expected to attend as indicated in the course schedule. Faculty teaching face-to-face courses will not be required to create a new, alternative on-line class as an accommodation for any student.
Students with medical conditions that would present a COVID-related risk in a face-to-face instructional setting should contact the Student Ability Success Center ( to begin the process of getting support. Students who do not adhere to the Covid19 Student Policies or the directives of their faculty will be directed to leave the classroom and will be referred to the Center for Student Rights and Responsibilities.
Do not come to campus if you do not feel well. Remain home and monitor your symptoms and seek medical attention as needed."

And now, another announcement mandated by SDSU administration.
Obligatory "Accommodating students with disabilities" statement:
If you are a student with a disability and believe you will need accommodations for this class, it is your responsibility to contact Student Disability Services at (619) 594-6473. To avoid any delay in the receipt of your accommodations, you should contact Student Disability Services as soon as possible. Please note that accommodations are not retroactive, and that accommodations based upon disability cannot be provided until you have presented your instructor with an accommodation letter from Student Disability Services. Your cooperation is appreciated.

Yet another announcement mandated by SDSU administration:
Obligatory "Religious observances" notification:
According to the University Policy File, students should notify the instructors of affected courses of planned absences for religious observances by the end of the second week of classes.

You guessed it. Another one.
Obligatory "Student Learning Outcomes" statement:
1. Students will implement solutions to problems in a variety of programming languages.
2. Students will discover the strengths and weakness of various programming paradigms, including; imperative, procedural, functional, object-oriented and logical programming.
3. Students will construct integrated solutions to problems utilizing several programming languages and paradigms.
4. Students will assess problems, choose programming languages and/or paradigms and then implement solutions.
5. Students will explain and use common language concepts such as; scope, types, binding, lexical analysis, syntax analysis, control constructs, functions, data management, error handling and concurrency.
6. Students will discuss various implementation methods and design decisions for/within programming languages.

Home | CS320/No Frames