teaching
CMSC 305
Design of Programming Languages
overview | logistics | schedule | assignments | presentations | resourcesLecture: Tue & Thu 8:30am-9:50am (RKC 100)
Lab: Fri 1:30pm-3:30pm (RKC 100)
Office Hours: Tue & Wed 10am-11am 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.
- The Scheme Programming Language. 4th Edition. R. Kent Dybvig. 2009.
- Programming in Lua. 4th Edition. Roberto Ierusalimschy. 2016.
- Eloquent JavaScript. 3rd Edition. Marijn Haverbeke. 2018.
- JavaScript Allongé. "Six Edition." Reginald Braithwaite. 2019.
- Exercises in Programming Style. Cristina Videira Lopes. Routledge. 2014.
- Midterms (40%): Two paper & pencil exams
- Labs (20%): Weekly programming assignments (one a week)
- Quizzes and Homework (15%): Shorter assignments (almost every class)
- Presentations (10%): Presentations of programming languages
- Project (15%) : An implementation of LISP in a new programming language (or your own programming language in LISP)
- Attend class.
- Be on time.
- Participate.
- Complete all assignments and start early.
- Check Google Classroom & this class website.
- Come to class prepared. Make sure to have read the required reading BEFORE class.
- When reading, studying, and listening, be active by taking notes, writing and asking questions.
- 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.
- Network outages and other computer problems are not valid excuses for missing deadlines; take this into account in your planning.
- Cooperate, but don't copy.
- 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 assignment and lab work private, a USB flash drive is recommended.