140 likes | 160 Views
Gain a broad view of programming languages and essential concepts like functional, object-oriented design, logic programming, scripting. Covering Lisp, ML, Java, Prolog, Perl. Detailed topics on each language included. Study the history of programming languages. Evaluation includes assignments, quizzes, group project, and final exam.
E N D
CSE 341 Programming LanguagesAutumn 2001 Instructor: Steve Tanimoto email:tanimoto@cs.washington.edu Teaching assistants: Rick Cox -- email: rick@cs.washington.edu Jeff West -- email: jeffwest@cs.washington.edu Purpose: To gain a broad view of programming languages and learn fundamental concepts that relate to them. CSE 341 -- S. Tanimoto Introduction
Reasons to Study Programming Languages Improve our understanding of computation and problem solving; our thoughts are shaped by our language (Whorfian hypothesis). Be able to choose the best language for the task. Gain facility at learning new languages. Gain access to great programming “literature”. Build an appreciation for rich programming environments and libraries. Be able to create “little languages” for specific purposes. CSE 341 -- S. Tanimoto Introduction
Languages and Major Topics to be Covered • Lisp • ML • Java • Prolog • Perl Functional programming “ “ with static typing Object-oriented design. Logic programming Scripting. CSE 341 -- S. Tanimoto Introduction
Detailed Topics with Lisp • Interactive programming • Functional programming, referential transparency, recursive functions • Functions as first-class objects, closures • List processing, uniformity of programs and data • Polymorphism • Macros • Web-based interaction (extra) CSE 341 -- S. Tanimoto Introduction
Detailed Topics with ML • Static types • Type inference • More functional programming • Pattern matching CSE 341 -- S. Tanimoto Introduction
Detailed Topics with Java • Object-oriented design • Inheritance, interfaces, information hiding. • Security and exception handling • Portable graphics library: AWT • Support for multiple threads CSE 341 -- S. Tanimoto Introduction
Detailed Topics with Prolog • Specification as programming • Predicate logic • Horn clauses • Unification, resolution CSE 341 -- S. Tanimoto Introduction
Detailed Topics with Perl • Scripting languages • Pattern matching with regular expressions • Associative arrays. • CGI programming for web-based services • Integration with operating system and databases. CSE 341 -- S. Tanimoto Introduction
Detailed Topics in VisualProgramming • History of visual programming • execution models: control flow, data flow, visual rules, direct manipulation, algorithm animation • Example systems: Agentsheets, Prograph, Stagecast Creator, ToonTalk. • Scalability • Program visualization CSE 341 -- S. Tanimoto Introduction
Textbooks • Steven Tanimoto: Symbols, Programs, Interaction: An Introduction to Common Lisp (Autumn 2001 version). • Patrick Niemeyer and Jonathan Knudsen: Learning Java. • Robert Sebesta: A Little Book on Perl. CSE 341 -- S. Tanimoto Introduction
Evaluation • Assignments 1, 2, 4, 5, 6, 7: 30% • Assignment 3: 10% • Group project: 20%. • Quiz 1: 10%. • Quiz 2: 10%. • Final exam 20%. CSE 341 -- S. Tanimoto Introduction
History of Programming Languages • FORTRAN 1954-57 numeric • ALGOL 60 1958-60 numeric • COBOL 1959-60 business • APL 1956-60 vector/matrix math • LISP 1956-62 symbols • SNOBOL4 1962-66 strings • PL/1 1963-64 general • BASIC 1964 educational • PASCAL 1971 educational CSE 341 -- S. Tanimoto Introduction
History of Prog. Languages (continued) • PROLOG 1972 AI/logic with rules • C 1972 general • Scheme 1975 educational • Ada 1979 general • Smalltalk 1971-80 applications/objects • C++ 1982-86 general/objects • CLOS 1983-84 LISP/objects • Perl 1989 scripting • Java 1991 applets, general/objects CSE 341 -- S. Tanimoto Introduction
Orthogonality • Every combination of two constructs of a language is meaningful. • The meaning of a construct does not depend on its context. • Pro: Makes learning a language easier, since there tend to be fewer constructs and there are fewer special cases. • Con: Because every combination of constructs must be allowed, nonsensical combinations will compile without error. arithmetic expressions arguments to functions CSE 341 -- S. Tanimoto Introduction