teaching
CMSC 305
Design of Programming Languages (F2020)
overview | logistics | schedule | assignments | presentations | resourcesIn-Person Lectures (RKC 107): Monday & Wednesday 2-3:20pm
Remote Lab (Zoom): Friday 2-4pm
Student Drop-In Hours (Zoom/RKC Atrium): Tuesday 2-3pm & Wednesday 9-10am and by appointment
Texts (any edition will do, including freely available versions)
- Structure and Interpretation of Computer Programs. 2nd Edition. Hal Abelson, Jerry Sussman and Julie Sussman. MIT Press. 1984. [prettier version]
- Essentials of Programming Languages. 3rd Edition. Daniel P. Friedman and Mitchell Wand. MIT Press. 2009.
- Crafting Interpreters. Bob Nystrom. 2020.
- The Scheme Programming Language. 4th Edition. R. Kent Dybvig. 2009.
- Programming in Lua. 4th Edition. Roberto Ierusalimschy. 2016.
- JavaScript Allongé. "Six Edition." Reginald Braithwaite. 2019.
- Exercises in Programming Style. Cristina Videira Lopes. Routledge. 2014.
- Exams (40%): Two exams
- Project (20%) : An implementation of LISP in a new programming language (or your own programming language in LISP)
- Labs (20%): Weekly programming assignments (in small groups)
- Participation (20%): Quizzes and homeworks (every class), including presentations of programming languages
- Participate. There will be myriad opportunities: in RKC 101, zoom, google docs, repl.it, dropbox paper, excalidraw, office hours, discord.
- When reading, studying, and listening, be active by taking notes and asking questions.
- Visit the professor's and tutor's drop-in hours.
- Attend class & be on time (whenever possible given COVID reality).
- Please do not attend class if you are sick, feel ill, know you may have been exposed to coronavirus, or have any of the symptoms listed on Involvio, the College daily health screen app. You are expected to complete the daily health screening using the College Involvio App before showing up to class; a green pass will give you access to academic buildings. Please note that you will not be penalized for absences. Participation in this course will include online activities that can be completed outside of class.
- Make sure to have read the required reading BEFORE class.
- Start all the assignments early.
- Check Google Classroom & this class website.
- Be respectful of your fellow classmates; my rule of thumb for judging whether a response is worthwhile: Is it Nice? Is it True? Is it Necessary? Pick at least two.
- Adhere to the Code of Ethics and Professional Conduct for the Association for Computing Machinery.
- Cooperate carefully and thoughtfully:
- Work within your pair & pod, and visit drop-in hours, before seeking help beyond.
- Credit work, including all sources you used from the web, other books, etc.
- Sharing ideas is encouraged, but blatantly copying work without attribution will be treated as scholastic dishonesty and receive no credit.
- Be prepared to demonstrate the theory of your program (Peter Naur).
- Keep your work backed-up and private using Google drive.