COP 4020 meeting -*- Outline -*- * the course itself needed: the CTM textbook ** 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: ----------------------------------------- ... capable of expressing all computations For example, Scheme and C++ are programming languages. Q: Others? AspectJ, Ruby, Python, Java, Ada, PL/I, BASIC, COBOL, Pascal, SNOBOL, Icon, Algol W, Algol 60, Algol 68, C, Haskall, Edison, ... (literally thousands) But the techniques we'll study aren't just limited to general-purpose programming langauges. These don't have to be able to compute all computable functions. examples: Lotus 1-2-3 macros, the MFC class library, MUMPS, JavaScript, VBA, Cold Fusion Q: Others? Formal languages are also used in a variety of settings: music, knitting, mathematics, engineering, ... ** objectives Q: What are your objectives for this course? Q: How do you want this course to help you in 5 years? (make a list) My objectives for you: - quickly learn new programming languages, - effectively use them, - Evaluate what combination of programming model would best solve a given problem, Why these objectives? - langauges are changing constantly people also use several at one time - learn new languages quickly mapping ideas from this class to the language read/write language reference manual - knowing good ways to program is fundamental to CS - good programming techniques are closely related to good language design (abstraction) - most programs evolve into languages, or have language parts - programming languages aren't good - concurrent hardware is going to cause a fundamental change soon ** plan for the course ------------------------------------------ PLAN FOR THE COURSE Use the textbook Concepts, Techniques, and Models of Computer Programming by Peter Van Roy and Seif Haridi (MIT Press, 2004). Broadly: - Different programming models esp. declarative declarative concurrent message passing relational - Kernel language approach Uses the language Oz ------------------------------------------ Explain these models briefly Explain kernel language approach briefly Note emphasis on concurrency important, due to new hardware! Assuming they already know the explicit state and OO models. ------------------------------------------ REASONS FOR LEARNING DECLARATIVE MODELS - Makes certain programs clearer - can see all inputs eval(exp, env) - functions as arguments helps in: abstraction modularization - cleaner concurrency (stateless) - gives you more ways to solve problems - ideas important for: - algorithm design - specification - describing programming languages - web services - it's interesting and fun ------------------------------------------ ** outcomes Q: How should we test for the objectives? My essential learning outcomes: - [Concepts] understand, use, apply concepts and terms - [UseModels] use each essential model in programming model to solve problems in Oz - [EvaluateModels] For each essential programming model convincingly evaluate its advantages for solving a given problem - [MapToLanguages] Convincingly explain what features in C, C++, and Java support each essential programming model ** syllabus start with basic ideas, kernel language approach Oz (base camp) then a bunch of extensions (declarative -> concurrent, relational) *** textbook show it ------------------------------------------ REQUIRED TEXTBOOK Concepts, Techniques, and Models of Computer Programming by Peter Van Roy and Seif Haridi (MIT Press, 2004) ------------------------------------------ *** grading ------------------------------------------ GRADING + No curve grading + Your grade is 65% based on tests 35% on homework ------------------------------------------ moral: use homeworks to learn, cheating on homework won't help quizzes used to - get students to read for first exposure on own time, - make class more productive - make class more interactive quizzes only 2 points, graded on the spot, instant feedback details in grading_policy.shtml web page *** cooperation and cheating ------------------------------------------ COOPERATION Can talk with others about homework - but must cite them Can cooperatively do homework - but must carefully certify (see grading policy for details) CHEATING Exchange of finished answers - without cooperation in solving them - without certification Using ideas of others - without citation Copying answers from the web - without citation ------------------------------------------ See grading policy for details. *** plan for class meetings - assign you a specific reading (perhaps with a self assessment quiz on WebCT?) - discussion based on readings - discuss problems and skills, give examples, have you try it (ungraded), discuss questions - discuss (add to book) relation to C, C++, and Java other langauges (some formalism) what makes "good" programs: e.g., abstraction, maintainence issues potential homework ideas relation to our outcomes and objectives *** ask for questions/concerns discuss them