I. Preliminaries to the first meeting --------------------------------------------------------- WELCOME TO Computer Science 342 PRINCIPLES OF PROGRAMMING LANGUAGES Professor Gary T. Leavens 229 Atanasoff Hall phone: 294-1580 email: leavens@cs.iastate.edu cs342s@cs.iastate.edu Office Hours: Course URL: http://www.cs.iastate.edu/~cs342/ 1. Pick up handouts (2 of them) --------------------------------------------------------- A. staff introductions B. student introductions How is a programming language like a religion? II. The course itself A. What is a programming language? ------------------------------------------ PROGRAMMING LANGUAGE def: a *programming language* is a language that is def: a *general-purpose langauge* is one that is not tailored to some particular application area. Examples: def: an *special-purpose language* is a language that is designed to support some particular application. Examples: ----------------------------------------- Others? Others? B. Overview ------------------------------------------ THE COURSE IN A NUTSHELL The journey to the mountain: functional programming techniques The mountain climb: using functional techniques to write interpreters Our equipment: Scheme, a Lisp dialect Our guides: the textbook authors ------------------------------------------ C. history D. objectives ------------------------------------------ Com S 342 ESSENTIAL OBJECTIVES You should be able to: 1. Write and modify programs in functional style 2. Make effective use of data abstraction 3. Change or enhance interpreters to have features such as: - control flow, - variables, - recursion, - scoping, - syntactic sugars, - arrays, - parameter passing mechanisms, - type checking, - objects, and inheritance 4. Write programs using such features and explain their behavior 5. Explain the data structures and algorithms used in interpreters. 6. Compare alternatives in design and implementation. ------------------------------------------ what is functional style? ------------------------------------------ REASONS FOR USING FUNCTIONAL STYLE - Makes certain programs clearer - can see all inputs eval(exp, env) - functions as arguments helps in: abstraction modularization - gives you more ways to solve problems - ideas important for: - algorithm design - specification - describing programming languages - web services - it's interesting and fun ------------------------------------------ E. skills ------------------------------------------ SKILLS WE TEACH IN 342 + functional abstraction techniques + data abstraction + how to build interpreters + meta-linguistic abstraction ------------------------------------------ F. syllabus 1. when 2. prerequisites ------------------------------------------ PREREQUISITES Com S 321 Engl 104 Com S 330 or Cpr E 310 Com S 309 or Com S 361 or Com S 363 ------------------------------------------ In what course do you learn about the halting problem? Context-free grammars? Data abstraction? Machine representation of data? The run-time stack? Recursion? 3. what work is involved ------------------------------------------ ESTIMATED TIME NEEDED FOR HOMEWORK Average: about 12 hrs/week. Mode: about than 13.5 hrs/week. Range: 0-5 to more than 14 hrs/week. ------------------------------------------ 4. texts ------------------------------------------ TEXTBOOKS Required: Essentials of Programming Languages (2e) The Little Schemer (4th ed.) Recommended: Structure and Interpretation of Computer Programs (2e) ------------------------------------------ 5. grading ------------------------------------------ GRADING + No curve grading + Your grade is 70% based on tests 30% on homework ------------------------------------------ 6. ask for questions/concerns III. discussion of course policies (in discussion sections) ------------------------------------------ FOR YOU TO DO In groups of 3 (or 4) for 5 minutes: a. introduce yourselves b. write down at least 1 question about the policies, course specification, or syllabus that you agree is confusing or you want to talk about c. select someone to ask the question(s) ------------------------------------------ IV. wrapping up the first class A. explain where the course documents are B. write most important point, what you'd like to hear more about