CS360 – Programming Language Concepts


Phone: No need to call me
Course Webpage:
Office Hours:

Teaching Assistant:

See http://www.cs.drexel.edu/clc — the Cyber Learning Center website. Click on your course to see your TAs, and those who are willing to help.


NOTE: If you choose to steal textbooks, download unsanctioned electronic copies, do not advertise this fact to your instructor. That will likely end the conversation.

Course Description:

Introduces the design and implementation of modern programming languages: formal theory underlying language implementation; concerns in naming, binding, storage allocation and typing; semantics of expressions and operators, control flow, and subprograms; procedural and data abstraction; functional, logic, and object-oriented languages. Students will construct an interpreter for a nontrivial language.


This is a required by all Computer Science students. Normally it is taken in the pre-junior year. The course is available to other students with sufficient programming experience (see prerequisites) who have an interest in programming languages, e.g., Information Systems, Computer Engineering, Software Engineering, etc.


  • CS 260 (Minimum Grade: C)
  • CS 265 (Minimum Grade: C)
  • CS 270 (Minimum Grade: C)


  • Recursion and induction; structural induction
  • Higher-order functions and functional programming
  • Syntax: abstract syntax, concrete syntax, and grammars
  • Semantics: tools for describing the meaning of programs including operational semantics

As the term progresses we'll see about covering the rest of these:

  • Lambda calculus
  • Reasoning about programs; property-based testing
  • Strong type systems; polymorphism
  • Algebraic data types
  • Building a Parser using tools

Course Objectives:


Course Requirements and Grading:

This table is soft, for the first couple days. I don't know what I can expect. E.g., I believe that "Remote Synchronous" (as opposed to "Online") means that I can expect students to attend during their scheduled class.

Attendance 10%
Assignments 30%
Midterm Exam 25%
Final Exam 35%

Lab and assignment evaluations will have a 20% reduction for each day they are late. Labs and assignments will have a 2-day hard deadline.

Last date to withdraw with a "W" grade:

Extra Credit:
None. Please don't ask.



  • Midterm
  • Final



Do not pull stuff off the Web. Odds are decent you'll get a 0, or be given an F for the course.

You are expected to abide by the deadlines. If you missed submitting by 2 minutes, then it's late. If submission closed 2 minutes before you tried to submit, you were late by 2 days and 2 minutes. We will not accept it.

Assignments must be all original work.

Under no circumstance will you email your work, w/out prior consent.

Target Platform

Because there are differences, even amongst flavors of Unix, all projects will be graded on the department Linux workstations (accessed through tux.cs.drexel.edu). Do all of your work on tux. Test on tux, before submitting.

Do all of your work on the department machines. Ask CCI-IT (at ihelp@drexel.edu) why there aren't any lab machines that boot to Linux any more.

On my front page are some links for basic Unix commands, and a quick reference for using the vi editor. Please also visit the Resources frame on this site.

The department Unix machines

If you have, or have had, a CS course you should have an account on the CS servers. If not, email ihelp@drexel.edu .

You can access your files and have shell access to tux from anywhere on the Internet. You simply need an SSH client. Mac, simple, open a terminal, ssh (and scp and rsync) is installed. Windows, I don't know. I'd recommend downloading and using PuTTY.

The department has a Web server where you can post content that we may play with at some point.

Classroom Discussion Board

Use the discussion board on Blackboard to ask questions about the course, or material studied in this course. Do not email instructors and TAs questions that all students might benefit from.

Only email instructors or TAs about individual administrative matters.

Some guidelines for posting to the discussion board:

  • No flaming each other. Be careful what you write. It is easy to write a statement which might be interpreted as hostile.
  • Use a good, descriptive subject. This is for you, not for us.
  • If you post a question that's already been asked, I'll remove it. Read earlier posts (and hope that your classmates used descriptive subjects).
  • Do not dogpile onto a thread. Do not introduce a new question. Start a new thread, if there is a new question.
  • Do not post code you wrote.

Academic Honesty


  • If you email me, please identify the course you're taking and section you're in. If the email does not have a Drexel reply-to address, then I will not reply, since I can't authenticate your identity. Put the course # (CS360) on the subject line, so your mail gets filtered correctly.
  • More on absences (from work/exams/quizzes): If you work for a living and are sent out of town, I understand. If your wife/child is ill, I understand. We can work something out.
    If you wish to go on holiday w/your family, or spend an extra week canoeing w/your friends, I've been there, would take canoeing or sailing over school any time, but that's on you. Asking me will only make me jealous, and will not help things.
  • Along similar lines, leaving early for breaks or the term-end is not looked favorably upon. The term schedule is published at least a year in advance, and the finals schedule is published at least 4 weeks before the term's end. After you're done your finals I'm still grading, and have no home to return to, so, again, I probably won't be real sympathetic.
  • I'm not here to sink your battleship; I've been a teacher for a long time, and really would just like you all to be prepared to survive the rest of your degree program, and maybe find programming fun. The burden of actually learning, however, lies with you.