# CS3110：OCaml Programming Correct + Efficient + Beautiful

## Descriptions

- Offered by: Cornell University
- Prerequisites: basic knowledge about imperative programming，such as C, Python, Java
- Programming Languages: OCaml
- Difficulty: 🌟🌟🌟
- Class Hour: 40 hours

### Evaluation for course: Modern SICP

If the best course for getting started with programming is SICP, then following it is CS3110.

If you are unfamiliar with what a functional programming language is, or have only heard the term, then this course, just like its name, will allow you to experience what is meant by correctness, efficiency, and elegance.

CS3110 is not only limited to functional programming, but it also combines theory and practical applications extensively. The course content goes further, covering OCaml language fundamentals, data structures and algorithms, test development, formal proofs, language feature implementation, and many more topics. Moreover, these contents are not isolated; instead, they are progressive and complementary, making it highly worth studying.

The main instructor, Michael Ryan Clarkson, with years of immersion in programming, employs simple language, clear explanations, and dissects the content with precision. The course videos are even useful for improving listening skills, and understanding is effortless with the aid of English subtitles.

### A Brief History of CS 3110

CS3110 is a course meticulously crafted by Cornell University over more than 20 years. Initially inspired by MIT6.001 SICP, it has been enriched with stricter methodologies and materials, encompassing functional programming, environment modeling, data structures, algorithms, and language implementation. In 2008, its formal title changed to CS3110, transitioning to the OCaml language. In the fall of 2018, the process of writing the [course textbook](https://cs3110.github.io/textbook) began. The current course instructor announced [course videos](https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU) on YouTube in 2021.

## Course Resources

- Recordings on youtube: <https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU>
- Recordings on Bilibili: <https://www.bilibili.com/video/BV1dv4y127Ui/>
- Textbook：<https://cs3110.github.io/textbook>
- Assignments：In the textbook, exercises are optional, with difficulty ranging from 1 to 4 stars, noting that the difficulty between 3-star and 4-star exercises varies significantly.

## Personal Resources

All the resources and assignments used by @featherwit001 in this course are maintained in[featherwit001/CS3110_OCaml_Programming - GitHub](https://github.com/featherwit001/CS3110_OCaml_Programming)
