We are wrapping up the unit on Lisp/Racket today. There is a reading for today under the assignments tab, so please read The Roots of Lisp before class. We will be discussing some advanced language features of Lisp and some of the philosophy of functional programming. We will also talk about how to submit the exercises we've done. I'll see everyone in class!
We are going to end class early today so that people can attend Tech Connect. Everyone should still come, and I promise you can leave by 5:45 if you want to.
Next week we are going to go over the Bash assignment and then dive into Lisp. For next week, please make sure you have your development environment installed (most likely the VM) and you were able to fork and clone the Assignments repository. I posted instructions below for setting up GitHub. For next week, please go through a short Linux introduction and the first two chapters of Pro Git if you have not used these tools before. See the assignments page for links. I'll see everyone next week!
PS: The projector now works.
In this class, we will be using GitHub to submit assignments. The reason is to give the class exposure to a tool that will greatly help you to collaborate on projects in the future. The first step is to set up a GitHub account. If you haven't done so already, here is how you can get set up to submit assignments.
- Create an account on GitHub.
- Add the public key for your VM. This will allow you to push to your repository without entering your password. See here for instructions.
- Fork the Assignments repository.
- Clone your repository onto your VM. You will now be able to work on the exercises posted.
This is the main course website. The earlier posts are for the previous semester, but you may look through them if you wish. Assignments and readings will be posted weekly on the assignments page (there's already one up). Instructions on setting up your programming environment for this class are on the resources page.
You've completed the Programming Languages house course. We hope that you have enjoyed the course as much as we did.
We've learned so much from creating and teaching the course, from spending hours and hours to prepare enough material to fill a 3 hour lecture, to trying to find many different ways to simply the explanation to a difficult concept, to creating assignments that were just difficult enough to challenge you, to stumbling sometimes during lecture to answer your questions when completely thinking on our feet. We thank you for your patience and support throughout the course, as we participated in this experiment.
We are also happy to announce that Jim Posen, one of our students, will teach this course again in the Fall semester. We have complete confidence in Jim and his ability to master and teach the material. If you've enjoyed the course, please help it continue!
The materials and resources we've created and collected for the course are now all online on this website and open source in our Github Organization. If you have anything to contribute, please send a pull request and we will gladly add it.
Thank you again! And have a fantastic summer!
Kevin and Yang
Due Thursday, May 2, 2013
For your final assignment, you will be tasked with designing your very own programming language!
Please fork this repository and modify the
assignment.md document. We have provided a skeleton for your design document. Each section outlines some of the key points that you should discuss. Under each section are a series of bullet points that provide some considerations you may or may not want to talk about. You shouldn't incorporate all of them - they are just suggestions to get the ball rolling.
When discussing the decisions you have made in designing your language, please justify each and weigh the pros and cons. Simply stating that your programming language is an "interpreted, imperative, hybrid functional/object-oriented, dynamically-typed, generic, garbage-collected language" isn't enough.
Things to Remember
In particular, you should design your language with specific goals and use cases in mind. Whether you're designing a domain-specific language or general purpose language, you are still going to need to optimize and make decisions with a purpose in mind.
We're focusing on the semantics of your language, not the syntax. Syntax will show through in your code examples; however, you may want to consider how the grammar of your language is going to be structured.
Make sure that your language actually comes together as a whole. Don't mash together contradictory features just for the sake of doing so.
Remember, there's a trade-off to everything.
Sometimes less is more.
Congratulations! We have finished the last of the seven languages, Haskell.
The slides for Erlang, Clojure, and Haskell can be found on the course website.
Please direct any questions to the issues pages of respective language repository on Github.
- Ruby - LCD Numbers Solutions
- Prolog - Partition and Partition with index Solutions
- Scala - Quick Sort Solutions
Turn on your GitHub Notifications
Go to your settings/notifications and make sure you check the email boxes for both notification types to get our announcements in email.