Skip to main content

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

ChapterTopicSlidesVideoCode Repository
1Program DesignPendingPending
2Development Environments & ExpressionsPendingPending
3Functions, Lists & RecursionPendingPending
4Tuples, Structs & EnumsPendingPending
5TreesPendingPending
6Generics & Higher-Order FunctionsPendingPending
7Imperative ProgrammingPendingPending
8QueuesPendingPending
9TraitsPendingPending
10Hash Tables & ClosuresPendingPending
11Case Study: ParserPendingPending
12Case Study: AutodiffPendingPending
13Case Study: Neural NetworkPendingPending
14Case Study: Stack MachinePendingPending

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.