I. Preliminaries to the first meeting ------------------------------------------ WELCOME TO Com S 541 PROGRAMMING LANGUAGES 1 Professor Gary T. Leavens 229 Atanasoff Hall phone: 294-1580 email: leavens@cs.iastate.edu Office Hours: TWR 11 1. Pick up handouts (4 of them) ------------------------------------------ II. staff introductions III. introduction A. brief course specification 1. motivating questions ------------------------------------------ MOTIVATING QUESTIONS 1. What are good ways to program? 2. How can a way of programming be effectively expressed? 3. What are the costs? How can they be lowered? ------------------------------------------ What kinds of things have you heard about question 1? 2? 2. capsule summary of the course ------------------------------------------ COURSE OUTLINE Meetings Topic ================================ 1 Introduction 1-5 Functional Programming 6-7 Programming Lang. Core 8-11 The Abstraction Principle 13-17 Smalltalk 18-19,21 Parameters, Correspondence 22-24 Qualification Principle 25-26 Records and Lambda Abstraction 27-30 Semantics of OO languages ------------------------------------------ 3. prerequisites ------------------------------------------ PREREQUISITES Com S 442 + context-free grammars + compiler data structures + run-time costs of various features + large software programming experience OR Com S 342 + basic constructs of languages + interpreters + interpreter data structures + design alternatives for features + functional programming Com S 331 + formal language theory Com S 411 + software engineering practice + large software programming experience ------------------------------------------ 4. objectives (see course spec) ------------------------------------------ COURSE OBJECTIVES - design (parts of) languages - explain major features of modern languages - explain type systems and how they relate to design and logic - read and write formal semantics for small languages and use to evaluate designs - solve problems using functional and object-oriented paradigms ------------------------------------------ B. Course policies and procedures (can omit if no time, it's in the handouts) 1. Course texts. 2. Grading. ------------------------------------------ GRADING + No curve grading + Your grade is 50% on homework 50% based on tests ------------------------------------------ C. homework 0 IV. group work A. motivation --------------------- COOPERATIVE LEARNING BENEFITS + active learning + academic achievement + higher-level thinking skills + attitudes, motivation + teamwork, interpersonal skills + communication skills + understanding of work environment + self-esteem + level of anxiety + race, gender relations + class attendance + better questions in class --------------------- B. policies ---------------- HOW TO WORK IN GROUPS 1. For each group problem, You handwrite your own plan or get stuck and write why. 2. Your group meets, compares plans, helps those stuck, decides on plan, carries it out (however you like) 3. Group leader assembles work and writes Leader: I.A. Leader I. Did Work M.E. Too to certify who participated 4. Discuss what worked, didn't, changes; add summary of that to the homework 5. Group leadership rotates --------------------------- -------------------------- DON'T DO THIS 1. Go to the meeting without writing a plan or getting stuck 2. Your group meets, divides up problems, you do 1 out of 3. 3. Group leader assembles work, writes Leader: I.A. Leader I. Did Work M.E. Too to certify who participated 4. Group leader writes that all went well. 5. Group leader is always I.A. ------------------------ C. form groups --------------------- PICKING GROUPS 1. meet other interested parties 2. exchange contact information email, phone, address 3. (later) send mail to dhara@cs.iastate.edu telling: names, e-mail, phone --------------------- V. discussion of course policies ------------------------------------------ FOR YOU TO DO In groups a. write down at least 1 question about the policies, course specification, or syllabus that you agree is confusing or you want to talk about b. select someone to ask the question(s) ------------------------------------------ VI. Why study programming language design? A. What does language do for us? 1. Linguistic relativism (Whorf hypothesis) 2. automation, language level B. The rhetoric of programming ------------------ DO 14 I=1,N DO 14 J=1,N 14 V(I,J)=(I/J)*(J/I) ------------------ VII. the best programming language A. what is meant by best? B. arguments C. How does each language stack up on this scale? D. What other languages are there that might be better? VIII. economic impacts of different programming languages A. What is known 1. Machine Oriented Language (MOL) vs. Higher Order Language (HOL) 2. The big question 3. logical inferences B. quality is quality a product or a process? do statistical quality control techniques apply to software at all? IX. connections of Programming Languages to other areas of Computer Science A. Programming Language Ideas useful in other areas 1. notational ideas a. in OS b. in SE c. in databases d. in programming techniques 2. semantic ideas a. in data structures b. in programming B. Ideas from other areas useful in Programming Languages 1. from programming techniques and SE 2. from AI (and math logic) 3. from Computer Architecture 4. from math 5. from OS and databases 6. from theory, AI, and linguistics C. Tools and Techniques that are generally useful 1. from programming 2. from theory and semantics 3. from design