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: T R 2 1. Pick up handouts (6 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 2-8 Smalltalk and OOP 11 test 9-10,12-16 Haskell and functional 19 test 17-18,20-22 lambda Prolog and logic 25 test 23-24,26 Operational semantics 27-39 Type systems 30 Course Evaluation & Summary ------------------------------------------ 3. prerequisites ------------------------------------------ PREREQUISITES Com S 440 + 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, specify, evaluate languages - explain major features of modern languages - explain type systems and how they relate to design and logic - solve problems using object-oriented, functional, and logic paradigms - prototype language designs using semantic interpreters - read and write formal semantics for small languages ------------------------------------------ B. Course policies and procedures (can omit if no time, it's in the handouts) 1. Required and Recommended Course texts. 2. Grading. ------------------------------------------ GRADING + No curve grading + Your grade is 50% on homework 50% based on tests ------------------------------------------ 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