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)