Programming Languages: Principles and Paradigms

CSE 130, Summer 2004

Course Overview

CSE 130 discusses the main features, fundamental concepts of programming languages and the rationale for their design. The course considers the characteristics which various languages have in common as well as the ways in which they may be distingusihed. Some of the basic concepts underlying Imperative, functional, logic, object-oriented, and concurrent languages will be used. The principle languages used as exemples of the course concepts are: C, Ada, C++, Java, Lisp and Prolog, although a number of others will be covered to demonstrate language principles, design, and evolution. While one component of the course will be to write programs in the principle languages, CSE 130 is not a programming course, per se, and thus focuses more on programming language concepts in general, and less on the details of specific languages. As such, in addition to programming assignments, student performance in the course will be based strongly on homework assignments, a midterm, and a final exam.

WebBoard

Please use the CSE 130 WebBoard for questions about administrivia, subject matter, assignments, and so on; basically, use it for everything but private communication specific to you. Often the answer to one person's question is useful to others, often because others had the same question. It's more efficient for us to answer the question once and for all than to recapitulate it for each person individually. Thanks for your cooperation!

Contact Information

Name e-mail address
R. K. Shyamasundar (Instructor) rshyamas@ucsd.edu
Dana Dahlstrom (Teaching Assistant) dana+130 at cs dot ucsd dot edu

Integrity of Scholarship

University rules on integrity of scholarship will be strictly enforced. By taking this course, you implicitly agree to abide by the UCSD Policy on Integrity of Scholarship described on this Web Site. In particular, "all academic work will be done by the student to whom it is assigned, without unauthorized aid of any kind."

You are expected to do your own work on all assignments; there are no group projects in this course. You may (and are encouraged to) engage in general discussions with your classmates regarding the assignments, but specific details of a solution, including the solution itself, must always be your own work. There will be graded assignments and exam in this course, as described below. All exams are closed book; no implements other than your brain and a writing instrument are to be used.

Incidents which violate the University's rules on integrity of scholarship will be taken seriously. In addition to receiving a zero (0) on the assignment/exam in question, students may also face other penalties, up to and including, expulsion from the University. Should you have any doubts about the moral and/or ethical implications of an activity regarding the course, please see the instructors.

Class Meeting Schedule

Lectures: Tuesday and Thursday, 1400--1650, CSB 004
Discussion Section: Friday, 1500--1550, CSB 005
Question & Answer Session (by request only; e-mail Dana!): Monday 1500--1550, CSB 005

Midterm Exam: Thursday, July 15 (during class)
Final Exam: Thursday, July 29 (during class)

Grading Guidelines

See CSE 130 on GradeSource. If you need your secret number, e-mail Dana.

Homework Assignments (HW) 2 @ 7.5% each
Programming Assignments (PA) 2 @ 15% each
Midterm Examination 25%
Final Examination 30%

Notes:

Text and Lecture Materials

The required text for CSE 130 for the Spring Quarter 2003 is Concepts of Programming Languages, Sixth Edition, by Robert W. Sebesta (ISBN 0-201-75295-6), and is available at the UCSD Bookstore. Another book which will be useful is: Ravi Sethi: Programming Language Constructs and Concepts, Addison Wesley.

Other course materials such as reference works, web sites, tutorials, etc. will be made available on this site as appropriate. Please note that, because of the broad range of topics covered in this class, not all material presented during lectures will appear in the textbook, or may be explained differently and/or in greater depth. Acceptable completion of the course assignments and examinations is contingent upon familiarity with the assigned readings and material covered in class, so attendance at lectures and discussion sections is exceptionally important.

Homework Assignments

Programming Assignments

Exams

Syllabus

Date Topics Lecture Notes Reading
06-28 (Tuesday) Design and Evaluation of PLs;
Categories of programming Languages;
A Simple Programming Language: Guarded Command Language
Lecture 1 [text] Hints on Programming Languages [PDF] by C.A.R. Hoare
06-30 (Thursday) Syntax: BNF, Recursive Descent Parsers, syntax diagrams Lecture 2 [text] Sebesta: chapter 8; sections 7.1--7.2, 3.1--3.3, and 4.1--4.4.
07-06 (Tuesday) Variables, Binding, primitive data types;
Expressions, Assignment Statements;
Compound types: arrays, records, Other control structures;
Scope and extent
Lecture 3 [text]
07-08 (Thursday) Block Structured Scope;
Procedural Abstraction, Recursive procedures
Lecture 4 [text] Sebesta: sections 5.1--5.7, 6.1--6.9, and 7.3--7.8.
07-13 (Tuesday) Parameter Passing Mechanisms; Scope Rules; pre-midterm review Lecture 5 [text] Sebesta: sections 9.1--9.5
07-15 (Thursday) Midterm; Activation Records; Dynamic Scoping Lecture 6 [text] Sebesta: sections 10.1--10.6
07-20 (Tuesday) Encapsulation and Information Hiding; Modules; Templates Lecture 7 [text] and Lecture 8 [text] Sebesta: sections 11.1--11.7, 12.1--12.8
07-22 (Thursday) Object-Oriented Programming Lecture 9 [text] Sebesta: chapter 15
07-27 (Tuesday) Functional Programming; Relational Programming; Message Passing Lecture 10 [text] Sebesta: 16.4--16.6.5, 13.5.1-13.5.3
07-29 (Thursday) Final Exam (cumulative)