0. Course Overview
Welcome to the Programming with MoonBit: A Modern Approach course.
Programming is a subject with a long history, dating back to the 19th century when Ada Lovelace wrote early programs. Since then, after a century of evolution, programming languages have emerged like mushrooms after rain, various programming paradigms have been proposed, and various industries have gradually had digital demands, with the scale of software development becoming increasingly large. In this context, we are launching this public course, aimed at allowing more people to get in touch with programming, understand modern programming concepts, and master the essentials of software development.
The course mainly focuses on program design and practical applications. It will introduce various programming paradigms, including functional programming, imperative programming, and object-oriented programming. At the same time, it will demonstrate how to use the MoonBit programming language to develop complex software projects.
The course is suitable for a wide audience, from programming beginners to experienced developers. No specific prerequisites are required, and we will continue to refine the course to provide clear and understandable content.
Course Outline
Chapter | Topic | Slides | Video | Code Repository |
---|---|---|---|---|
1 | Program Design | Pending | Pending | |
2 | Development Environments & Expressions | Pending | Pending | |
3 | Functions, Lists & Recursion | Pending | Pending | |
4 | Tuples, Structs & Enums | Pending | Pending | |
5 | Trees | Pending | Pending | |
6 | Generics & Higher-Order Functions | Pending | Pending | |
7 | Imperative Programming | Pending | Pending | |
8 | Queues | Pending | Pending | |
9 | Traits | Pending | Pending | |
10 | Hash Maps & Closures | Pending | Pending | |
11 | Case Study: Parser | Pending | Pending | |
12 | Case Study: Autodiff | Pending | Pending | |
13 | Case Study: Neural Network | Pending | Pending | |
14 | Case Study: Stack Machine | Pending | Pending |
Chapters 1 to 6 focus on functional programming, where we will learn about basic data structures and algorithms, and then delve into advanced topics such as higher-order functions and interfaces. Starting from Chapter 7, we will move on to imperative programming, where we will work with mutable data. Finally, we will conclude our study with an introduction to object-oriented programming. In the last few chapters, we will present some case studies to demonstrate how to use MoonBit to develop complex programs.
All course materials, including videos, lecture notes, and code, will be publicly available on the internet, allowing individuals to study at their own pace.
Getting Started
The first and most important thing is to connect with the community, where you can get help with your studies. Please join our Discord server, in which you can:
- Ask for support in studying any module;
- Showcase your projects;
- Be the first to know about MoonBit updates and announcements;
- Have easy access to all the course content and resources;
- Study with others in one of the voice Study Rooms;
- Give feedback to MoonBit courses.
Besides, we have also established a forum for MoonBit-related discussions, where questions, feedback, and suggestions are all welcome.
In this course, we will be using MoonBit as our programming language. The installation and configuration of the development environment will be covered in Chapter 2.
Acknowledgements
This course draws inspiration from UPenn CIS 1200.