Announcements #

Second Midterm Exam Released

The second midterm has been released and is available on Gradescope as “Second Midterm Exam”. The exam is due on Wednesday, April 28th at 11:59pm ET.  

During the exam period, we have disabled the Ed discussion board and posting for the Slack. If you have an urgent request for the course staff, please email heads@cs51.io.

You have 100 minutes to complete the exam or till 11:59pm ET on 4/28, whichever is earlier. For more information about midterm policies, see https://url.cs51.io/exam-instructions.

Description #

CS51 teaches fundamental concepts in the design of computer programs, emphasizing the crucial role of abstraction. The goal of the course is to give students insight into the difference between programming and programming well. One and the same problem can be solved in different ways, and the different solutions can vary along multiple dimensions including correctness, efficiency, readability, scalability, and elegance.

To emphasize the differing approaches to expressing programming solutions, you will learn to program in a variety of paradigms – including imperative (familiar from CS50 but seen here in a more elemental form), functional, and object-oriented. The elegant multi-paradigm programming language OCaml is the ideal language for manifesting these ideas. Important ideas from software engineering and models of computation will inform these different views of programming. You should come out of the course a better programmer in any language, but also a better computational thinker, with a much broader range of tools at your disposal and ability to analyze the quality of programs.