50.056 Software Abstraction Functional Programming
Course Description
This course introduces students to functional programming and how to construct software abstractions. Students learn how to compose functions and perform computation in a functional way. Higher order function will be taught as a way to abstract computation. The course then introduces students on how they can abstract data in functional programming. The students will be brought into a discussion of state-based computation and how it is best done to allow better testing and concurrency. In the later part of the course, students will learn how they can apply many these concepts to create meta circular evaluator and implement lazy evaluations. The course introduces many concepts that inspires various programming languages and, throughout, the idea of software abstraction is emphasised.
Prerequisites
10.014 Computational Thinking for Design
Assessments
| Components | Weight | Period |
|---|---|---|
| Quizzes | 10% | weekly |
| Problem Sets | 20% | weekly |
| 1D Projects | 20% | week 2, 5, 10 |
| Mid-Term Exam | 20% | week 8 |
| Final Exam | 30% | week 14 |
| Survey and participation | 2% | week 14 |
| Total | 102 |
For Audit students to be considered pass, they need to have above 60% scores for the following assessments:
- Quizzes
- Problem Sets
- 1D Projects
Quizzes
There will be Reading Quizzes every week. The links to the required reading are available in the learning management system. After you completed the reading material, attempt the reading quiz. The reading quizzes are usually available on the Wednesday before the week at 12PM and has to be completed by the Monday of that week at 9AM.
At the end of each week there will be a review quiz. The contents of the review quiz will be the same as the reading quiz but accumulative from the first week. The review quizzes are available from the Friday of that week at 12PM and has to be completed by the Wednesday of the following week at 12PM.
You have 6 attempts for each quiz and the latest score will be taken as the final score. There are no makeup if you miss the reading quiz. However, you only need to complete 60% of the quizzes to get a full mark for this assessment.
Problem Sets
There will be cohort problem sets and homework problem sets every week. The problem sets are normally released on the Wednesday before the actual week at 12:00 PM. The due date for every problem sets is three weeks from the Monday of the actual week at 11:59PM.
Students only need to score 70% out of the total points to get full mark for this assessment.
In certain weeks, there are extra problem sets. These are optional and students are encouraged to work on them but it will not be included as part of the total points.
Survey and Participation
Students will get an extra 2% out of the total score if they satisfy the following conditions:
- Fill in subject evaluation and instructor evaluation survey at the middle (if applicable) and at the end of the course.
- Achieved 80% attendance.
Attendance will be taken within 5 min at the beginning of the class using Qwickly Attendance. Please download the Android or iOS version of the app.
Course Learning Outcomes
By the end of this course, students should be able to:
- Use higher order functions to create abstraction for computations
- Create abstraction to represent complex data
- Discuss the advantages and disadvantages of assignment operator in imperative programming
- Implement state-based model
- Implement stream-processing approach for computing sequences and iterations
- Create meta-circular evaluator
- Discuss the advantages of lazy evaluations and implement it
Resource
The main resources are lecture slides, tutorial sessions, and online documentations. There are no official textbooks. But the following are useful for reference and deeper understanding of some topics.
- Harold Abelson, Gerald Jay Sussman, Julie Sussman. Structure and Interpretation of Computer Programs, 2nd Edition, 1996. Link to Online Book.
Instructors
-
Oka Kurniawan (oka_kurniawan@sutd.edu.sg)
- Office Hour: Fridays, 1:30pm - 3:00pm, 1.402.29 (Message on Ed Discussion or MS Teams to make appointment)
-
Kenny Lu (kenny_lu@sutd.edu.sg)
- Office Hour: Fridays: 1:30pm - 3:00pm, 1.402.25 (Message on Ed Discussion or MS Teams to make appointment)
Communication
If you have course/assignment/project related questions, please post it on the Ed Discussion. All important notifications will be posted in Ed Discussion. The link to the Ed Discussion is provided on the "Information" page of your course eDimension.
Softwares
If you would like to submit your assignment directly from your GitHub repositories, please follow the steps in this document: Linking Gradescope with GitHub account.
Submission Policy and Plagiarism
- You will do the assignment/project on your own (own teams) and will not copy paste solutions from someone else.
- You will not post any solutions related to this course to a private/public repository that is accessible by the public/others.
- Students are allowed to have a private repository for their assignment which no one can access.
- For projects, students can only invite their partners as collaborators to a private repository.
- Failing to follow the Code of Honour will result in failing the course and/or being submitted to the University Disciplinary Committee. The consequences apply to both the person who shares their work and the person who copies the work.
Schedule
See Course Calendar and Due Dates.
Make Up and Alternative Assessment
Make ups for Mid-Term and Final exam will be administered when there is an official Leave of Absence from OSA. There will be only one make up. There will be no make-up if students miss the make up test.