CSE 452: Organization of Programming Languages

advertisement
CSE 452: Organization of Programming Languages
Fall 2003
Time:
Place:
Email:
Web Page:
Tu, Th: 10:20-11:40am
c312 Wells Hall
cse452@cse.msu.edu
http://www.cse.msu.edu/~cse452
A. GENERAL INFORMATION
Instructor:
Pang-Ning Tan
Office: 2129 Engineering Building
Office Hours: Tu 12:40-1:40pm, Th 12-1pm
Phone: 432-9240
Email: ptan@cse.msu.edu
Teaching Assistant:
John Bradley Johnston
Office Hours: TBA
Email: john1545@pilot.msu.edu
Lab sections:
Section 1: Tu 12:40-2:30pm (3203 Engineering Building)
Section 2: Tu 7:00-8:50pm (3203 Engineering Building)
B. COURSE INFORMATION
Course Description
This course provides a general overview to the field of programming languages. We will examine
a variety of programming languages, from early languages such as Plankalkül and short code, to
more recent ones such as Java and Perl.
If the past cannot teach the present, then history need not have bothered to go on, and the
world has wasted a great deal of time --- Russell Hoban
While knowing the history of programming languages is important for computer scientists and
engineers, the principal aim of this course is to understand the key features as well as the rationale
behind the design decisions of these languages. By knowing the strengths and limitations of each
language, this may help us to make a more informed decision about the choice of programming
language for a particular project.
Throughout this course, students will be introduced to several programming paradigms, such as
object-oriented, functional, and logic programming, along with the programming languages that
implement these paradigms. Homework and programming exercises are given to help students to
familiarize themselves with these languages. At the end of this course, students are not expected
to become experts in all of these languages, but are expected to be able to learn new languages
more easily on their own.
Finally, given the pervasiveness of the Web, another important focus of this course is on Internet
programming. Students will learn both client-side and server-side scripting languages, as well as
markup languages such as HTML and XML. A final project based on Internet programming will
be given, to encourage students to learn more specific details of these languages on their own.
Textbook
There is no required textbook for this course. Required readings will be left online and in
Engineering library reserve. Students are encouraged to read the following reference books:
 Robert W. Sebesta: Concepts of Programming Languages, 5th Edition, Addison-Wesley,
2002.
 Ravi Sethi: Programming Languages – Concepts and Constructs, 2nd Edition, AddisonWesley, 1996.
 Carlo Ghezzi & Mehdi Jazayeri: Programming Language Concepts, 3rd Edition, John
Wiley & Sons, 1998.
Course Outline
The following material will be covered in the course.
 Introduction: programming vs natural languages, programming paradigms, language
evaluation criteria.
 Imperative Programming: data types and pointers, control statements, procedure
activation.
 Object-oriented Programming: encapsulation, inheritance, dynamic binding
 Web Programming: Web architecture, HTTP, HTML, XML, client-side programming,
server-side programming
 Functional programming: lambda calculus, Scheme, LISP, Haskell, ML
 Logic programming: predicate calculus, Horn clauses, Prolog
Grading
 Homework & programming assignments
 Project
 Midterm exam
 Final exam
30%
20%
25%
25%
Class Policy
Assignments are due by noon on the scheduled due date. Late assignments are
penalized at 25% points for the first day and additional 50% for the second day after
which submissions will not be accepted.
Academic Integrity
You are not allowed to derive solutions to the assignments from existing code or from
previous instances of this course. All assignments must be done from scratch. The solutions of the
problems must be your own work. The Department of Computer Science expects all students to
adhere to MSU’s policy on Integrity of Scholarship and Grades
(http://www.vps.msu.edu/SpLife/rule32.htm) and General Student Regulation 1.00 in the
student handbook (Spartan Life, http://www.vps.msu.edu/SpLife/reg3.htm).
Tentative Schedule
Week
Date
Schedule
Evaluation
1
26-Aug
Introduction
1
28-Aug
Syntax and Semantics
2
2-Sep
Syntax and Semantics
2
4-Sep
Data Types
3
9-Sep
Data Types
3
11-Sep
Control Statements
4
16-Sep
Procedures and Subprograms
4
18-Sep
Procedures and Subprograms
5
23-Sep
Object-oriented Programming
5
25-Sep
Object-oriented Programming
6
30-Sep
Object-oriented Programming
6
2-Oct
Object-oriented Programming
7
7-Oct
Web Architecture
7
9-Oct
HTML and Cascading Style Sheets
8
14-Oct
8
16-Oct
Client-side Scripting
9
21-Oct
Client-side Scripting
9
23-Oct
Server-Side Scripting
10
28-Oct
Server-Side Scripting
10
30-Oct
XML
11
4-Nov
XML
11
6-Nov
Functional programming
12
11-Nov
Functional programming
12
13-Nov
Functional programming
13
18-Nov
Functional programming
13
20-Nov
Logic programming
14
25-Nov
Logic programming
14
27-Nov
Thanksgiving Holiday
15
2-Dec
Logic programming
Project due
15
4-Dec
Logic programming
Assignment 5 due
16
12-Dec
-
Assignment 1 due
Assignment 2 due
Midterm Exam
Assignment 3 due
-
Assignment 4 due
Final Exam (10:00am-12:00pm)
Download