This course is a core course in the computer science curriculum. In this course you will learn about the different language paradigms that computer scientists have developed to create solutions to various problem domains. You'll learn about the features of programming languages and you'll learn how languages are implemented. So the course ranges from the very abstract to the very particular.

Students must have a solid background in programming in a language (which one doesn't matter), must understand how computers work at a low level (as taught in the Computer Organizations and Systems course), and must be able to apply basic mathematical concepts (as taught in the Discrete Math course).

This course will, as you might expect, entail a lot of programming, much of it in languages that you probably have not heard of before. You will also be expected to master quite a bit of theoretical material and to apply this material to solve language problems such as creating grammars.

- Final exam poll take 2 (you have to sign into your google account).
- Take the final exam poll here
- Office Hours: MWF 11:00AM - 12:00PM
- git the Princess!
- Exam Haiku
- Ever wonder if functional programming is ever used in the "real" world? Check out this link: functional programming in the real world. You'll be surprised!
- How about the most popular programming languages? The site TIOBE software keeps track of the languages being refrenced the most.

Project 2 is due at the final exam period, Monday, 12 December, at 10:30.

- You must present your language and demonstrate all your programs. No changes can be made to any program after the final period.
- You may turn in the paper on Friday, 17 December, at 5pm. I will not accept any work after that time.

Project 1, Part 1 is due on Friday, 4 November.

Prob Set 3 is due on Monday, 24 October

Prob Set 2 is due on Wednesday, 12 October

No practicum or problem set the week of 3 October.

Exam 1 is on Tuesday, 4 October, in class.

Pract 4 is due Tues, 27 Sep.Pract 3 is due Tues, 20 Sep.

Pract 2 is due Tues, 13 Sep.

Pract 1 is due Tues, 6 Sep.

Install the following on your laptop (works on both Mac and Windows):

- intellij
- Leiningen
- the cursive plug-in to intellij

You can find instructions for doing this in the Pract 1 slides and on the chapter 1 lynda.com videos in the start-up playlist.

Prob Set 1 is due Wednesday, 31 Aug.