Category | Difficulty |
---|---|
HW | 6.5 |
Exams | 6 |
This is an introductory programming course that is designed to learn the basics of functional programming. The course teaches you how to write functional code as well as reason about your code and analyze the runtime of your code. It is taught in Standard ML. The prerequisites for this course are 15-112 and concepts (15-151/21-128 or 21-127).
- Homework: There is one weekly assignment each week. This assignment will consist of written tasks as well as programming tasks. All the tasks will relate to the content that was taught in the previous week and content will slowly build up on each other to allow for more complex functions to be written. Test cases are not provided for any of the functions that are written and so you will have to test the functions by yourself. Most homeworks will have you reason about functions (this can be code that you wrote) and show either time bounds or that prove some theorem.
- Exams: There are two midterm exams and one final. The first exam will cover material in the first couple of weeks while the second midterm has a greater emphasis on material covered after the first midterm. The final is cumulative.
- Attempt the problems that you work on during lab and make sure you understand them because this will help you with homework problems
- You can ask TA's to walk you through lab problems
- Make sure to read the writeups carefully (especially when they start getting longer as there is a lot of nested information)
- Review labs will have lots of problems of varying difficulties that will help you prepare for midterms
- Ask TA's about concepts you don't understand earlier rather than later
- Get into a habit of starting homework earlier rather than later so when homeworks become harder you are more prepared
- 150 tends to start out on the easier side however, after the first couple of hw's the difficulty does increase. Be prepared to have to put in more work to understand problems and come up with solutions.
- Since you are learning a new programming language make sure you understand the syntax and try to have good style for your code. This will make your code look cleaner and easier to reason about.
- Many people have trouble understanding how to write good structural induction proofs and learning when to cite totality. Make sure to review notes on these topics and ask TA's if you do have questions because these topics will keep showing up throughout the semester.
- Office hours are a good resource and don't be afraid to go.
- There is an smlhelp website in development that has many different examples of concepts along with helpful notes.