Bryn Mawr College
CS 245: Principles of Programming Languages
Fall 2010
Course Materials
Prof. Deepak Kumar

Texts  Important Dates  Assignments  Lectures  Grading Links

General Information

Instructor: Deepak Kumar, 246 Park Hall, 526-7485
E-Mail: dkumar at cs dot brynmawr dot edu

Lecture Hours: Tuesdays & Thursdays, 10:00a to 11:30a
Room: Park 349
Lab: TBA in Room 231 (additional lab hours will also available, see below)


These are the hours when the Lab will not be available:


Texts & Software

Programming Language Pragmatics (3rd Edition) by Michael L. Scott, Morgan Kaufmann Publishers, 2008. Available at the Campus Bookstore.

We will be using severalprogramming languages and systems. All will be made available in the Computer Science Lab (Room 231)

Readings: There will be several additional readings chosen from the Reading List (Click here)



Course Description: An introduction to a wide range of topics relating to programming languages with an emphasis on abstraction and design. Design issues relevant to the implementation of programming languages are discussed, including a review and in-depth treatment of mechanisms for sequence control, the run-time structure of programming languages and programming in the large. The course has a strong lab component where students get to construct large programs in at least three different imperative programming languages.

Important Dates

August 31 : First lecture
October 7: Exam 1
December 9: Last lecture/Exam 2


  1. Assignment#1: (Due on September 2): Chapter 1 of Scott lists several programming languages. Can you count them and list them? What is your favorite programming language? Why? Write up a short essay/note (1-2 pages) containing your "count", answers to these questions, comments on the readings. Hand in a printed version st the start of class on September 2.

  2. Assignment#2 (Due in class on September 9): Write a short (1-page) summary of the programming language assigned to you. You will make a 2-minute presentation on this to the class.
  3. Assignment#3 (Due on Tuesday, September 21): Implement the GCD program in the programming languag assigned to you. Additionally, do the same program in C. Hand in a printout of the programs and some sample runs.
  4. Assignment#4 (by Tuesday, October 5): (1) Do a short write up on expressions, assignment, sequencing, and selection features in the programming language assigned to you. Also read the handout ("Hard lessons of the Sixties") and write a short response (Reflections) included in your submission. (2) Write and implement a program to compute all the prime numbers between 1 and an input number N. Show some sample runs along with your program. You may use Python, or any language of your chosing. Submit the document in your dropbox folder.
  5. Assignment#5 (Due on Tuesday, November 9): Write a summary of the type system and data model for the language assigned to you. Submit a written report for this.
  6. Assignment#6 (Thursday, December 2, Tuesday December 7 & Thuesday December 9): Write a Programming Language report for the language assigned to you. Your report shoul dinclude a short summary of the language highlighting its history, reason for existence, and main design features. Additionally, showcase through one of more exmaples, the primary strengths of the language. This should be followed by yoru own critique of the language, espcially as compared to the language(s) you have known or worked with in the past. You will give a presentation of the report according to the schedule below. The written reports will be distributed to all the students in the class.

    Schedule of presentations:

    Thursday, December 2: Go, F#, Haskell
    Tuesday, December 7: Lisp, Objective C, Perl
    Thursday, December 9: Ruby, SML

    Each presentation will be 20 minutes long followed by 5 min of Q&A. Please coordinate with Deepak about your presentation and media requirements and logistics.



All graded work will receive a grade, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.3, 1.0, or 0.0. At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:

Exam 1: 20%
Exam 2: 25%
Labs & Written Work: 55%
Total: 100%



Created on August 15, 2010.