CSE 130: Programming Languages: Principles & Paradigms


  1. Sample answers for the final.

Course Objectives

We will discuss features used in various programming languages ("principles") and how the features integrate to form working languages ("paradigms"). The emphasis will be on using existing features as well as designing new features. The course will concentrate on C, Ada, C++, Java, ML, Perl, and awk.

Course Staff

Name Email Office Hours Office Location
S H Srinivasan shs@cs Tuesdays 2:00 - 3:00 APM 5337 or APM 3337-B
Renata Teixeira teixeira@cs Tuesdays 9:00-10:00 AM
Fridays 6:00-7:00 PM
APM3349D
Min Qian mqian@cs Mondays 9:00-10:00 AM
Mondays 7:45-8:45 PM
APM3349D
APM5301

References

Most of the concepts discussed can be found in Programming Languages: Concepts and Constructs (Second edition) by Ravi Sethi. You can use Elements of ML programming: ML97 by Jeffrey D Ullman to teach yourself ML.

I will not be "following" any text book. So the main resource for the course is the lecture notes. The lecture notes will be posted on the class web page.

Course schedule

Lectures are on Mondays and Wednesdays from 6:15pm to 7:35pm in Room 214, Center Hall.

The Discussion sections are on Wednesdays between 3:35pm and 4:25pm in Room 216, Center Hall.

There will be three programming assignments, one design assignment, one midterm exam, and one final exam.

The assignments will be announced on Jan 12, Jan 26, Feb 09, and Feb 23. The first three (programming) assignments are due on Jan 28, Feb 11, and Feb 25. The last (design) assignment is due on Mar 10. The midterm exam will be on Feb 16.

Exams and Assignments

The midterm and the final will be closed book/notes.

You will use C, Perl/awk, and a little ML in the first programming project, ML and Java in the second, and Perl/awk and Java in the last. In the design project, you will be asked to design a language based on given requirements. All the projects should be done in groups of three.

For the projects, you need to electronically submit the code as well as manually submit a report.

The programming projects carry a weight of 15% each, the design project 10%, midterm 15%, and the final 30%.

The mean and standard deviation of the scores will be announced. You can evaluate your performance based on these.

Project Guidelines

The project should be done in groups of exactly three members. The team should submit one technical report and one self-evaluation report. Only the team members can collaborate. All resources used should be explicitly cited.

Projects

First programming assignment: Test cases (test1, test2)

Second programming assignment

Third programming assignment (UPDATED ON FEB 11)

PL design assignment, Some example scenarios (ADDED ON MAR 04)

Lecture notes

Jan 10     Motivation and introduction
Lecture Notes
Multiparadigm programming
Jan 12     Design issues and types
Lecture notes, updated version
Jan 19     Types
Notes
Jan 24     Types (cont'd)
Notes
Jan 26     Introduction to ML
Notes
Jan 31     ML (continued)
Notes
Feb 02     Functional Progamming
Notes
Feb 07     Data abstraction
Notes
Feb 09     Object oriented programming
Notes
Feb 14     Concurrency: Threads and message passing
Threads, RMI
Feb 23     Some aspects of OOP
Notes
Feb 28     Some PL concepts
Notes (updated on Mar 01)
Mar 01     Some PL concepts (continued)
Mar 06     Prolog
Notes
Mar 08     C++ model
Notes
Mar 13     C++ model (continued)
Mar 15     Review
Notes

Bulletin board

You can use the bulletin board to clarify your doubts, look for partners, etc.