DOC PREVIEW
UW CSE 341 - Syllabus

This preview shows page 1 out of 2 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 2 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 2 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CSE341: Programming LanguagesCourse Information and SyllabusFall 2011Logistics: The instructor is Dan Grossman. See the course homepage,www.cs.washington.edu/education/courses/cse341/11au, for information about teaching assistants, of-fice hours, etc. You must ensure your email settings work for promptly receiving course email-list messages.Goals: Successful course participants will:• Internalize an accurate understanding of what functional and object-oriented programs mean• Develop the skills necessary to learn new programming languages quickly• Master specific language concepts such that they can recognize them in strange guises• Learn to evaluate the power and elegance of programming languages and their constructs• Attain reasonable proficiency in the ML, Racket, and Ruby languages — and, as a by-product, becomemore proficient in languages they already knowGrading and Exams: Do not miss the midterm or final.Midterm 20% Monday October 31, in classFinal 25% Tuesday December 13, 2:30–4:20Homeworks 55% approximately weekly (7 total)Unless announced otherwise, all homeworks contribute equally to the 55%.Late Policy: Homework is due at 11:00PM on the due date. This deadline is strict. For the entire quarter,you have 3 “late days”. You are strongly advised to save them for emergencies. You may use at most 2 forthe same assignment. They must be used in 24-hour chunks. Advice: Do not skip class or section to workon homework — this will cost you time in the long run.Academic Integrity: Any attempt to misrepresent the work you did will be dealt with via the appropriateUniversity mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty.The guidelines for this course and more information about academic integrity are in a separate document.You are responsible for knowing the information in that document.Text: The “required” text is: “Jeffrey D. Ullman. Elements of ML Programming, ML’97 Edition. 1998.”We will not follow the text closely, but it may prove useful during the first few weeks. The “recommended”text is: “Dave Thomas. Programming with Ruby. 2005.” The course will overlap only with several chaptersof this large book. You must decide how much you benefit from having a book in your hands; there are alsomany free on-line resources. There is no specific book for the Ruby portion of the course.In addition to these texts, the instructor has developed written reading notes corresponding to the lecturesthat he will be editing throughout the course.Advice:• Your instructor aims for lecture and section to be some of the most enriching hours of your collegecareer. We will start promptly, and you should arrive punctually and well-rested.• In every course, there is a danger that you will not learn much and thus lose the most important reasonto take the course. In 341, this danger is severe because it is easy to get “distracted by unfamiliarsurroundings” and never focus on the concepts you need to learn. These surroundings include newsyntax, editors, error messages, etc. Becoming comfortable with them is only one aspect of this course,so you must get past it. When we use a new language, you must spend time on your own “gettingcomfortable” in the new setting as quickly as possible so you do not start ignoring the course material.1• If you approach the course by saying, “I will have fun learning to think in new ways,” then you will dowell. If you instead say, “I will try to fit everything I see into the way I already look at programming,”then you will get frustrated. By the end, it will relate back to what you know, but be patient.Approximate Topic List (Subject to Change):1. Syntax vs. semantics vs. idioms vs. libraries vs. tools2. ML basics (bindings, conditionals, records, functions)3. Recursive functions and recursive types4. Algebraic datatypes, pattern matching5. Higher-order functions; closures6. Lexical scope7. Currying8. Syntactic sugar9. Equivalence and effects10. Parametric polymorphism and container types11. Type inference12. Abstract types and modules13. Racket basics14. Dynamic vs. static typing15. Laziness and memoization16. Implementing higher-order functions17. Macros18. Abstract types via dynamic type-creation19. Ruby basics20. Object-oriented programming is dynamic dispatch21. Pure object-orientation22. Implementing dynamic dispatch23. Subtyping for records, functions, and objects24. Class-based subtyping25. Multiple inheritance, interfaces, and mixins26. Subtyping vs. parametric polymorphism27. Functional vs. OO extensibility28. Basic garbage-collection implementationTo learn these topics using real programming languages and to gain experience with different languages, wewill use:• Standard ML (a statically typed, mostly functional language) (approximately 4–5 weeks)• Racket1(a dynamically typed, mostly functional language) (approximately 2–3 weeks)• Ruby (a dynamically typed, object-oriented language) (approxmately 2 weeks)• Java (a statically typed, object-oriented language) (less than 1 week)There are thousands of languages not on this list, many programming styles not represented, and manylanguage constructs and concepts that it would be great to study.1Racket evolved from Scheme and is very


View Full Document

UW CSE 341 - Syllabus

Documents in this Course
Macros

Macros

6 pages

Macros

Macros

6 pages

Macros

Macros

3 pages

Mutation

Mutation

10 pages

Macros

Macros

17 pages

Racket

Racket

25 pages

Scheme

Scheme

9 pages

Macros

Macros

6 pages

Load more
Download Syllabus
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Syllabus and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Syllabus 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?