Skip to content

MartinLwx/cs-courses

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Background

Hi 👋, this is a repo for cs-courses.

A collection of exercises in many courses that I have learned. Every course is organized as a git submodule. You may click on the links below, which will bring you to the real repo.

Warning

This repo is only for self-learning purposes; please DON'T PLAGIARIZE MY WORK and CHEAT IN THE CLASS.

Notations

Notations for available resources:

  • 🎥 represents the lecture videos.
  • 🏷 represents the PPT/Notes/Reading.
  • ⌨️ represents the assignments/Homework/Projects.
  • ⚙️ represents the autograde for assignments/homework/projects.

Outline

Tip

By clicking the hyperlinks, you can jump into another repo that contains my solutions.

CS tools

Mastering CS tools—especially command-line tools—is an effective way to boost your productivity.

Missing-semester (2020) 🎥🏷⌨️

Course Link & Solutions

Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered and is instead left to students to figure out on their own: proficiency with their tools.

Topics: command-line; text editor; version control systems

Programming

Before the era of AI coding, programming itself was the most important skill for software engineers. I used to recommend that every engineer learn at least one imperative programming language and one functional programming language.

As coding agents become increasingly capable, however, my recommendation has changed. Rather than focusing on learning more programming languages, I think it's more valuable to develop a solid understanding of software architecture, design patterns, and other higher-level software engineering concepts. These abstractions allow you to better guide and constrain coding agents, leading to higher-quality implementations.

CS146S: The Modern Software Developer (2025) 🏷⌨️

Course Link & Solutions

This course demonstrates that modern AI tooling will not only enhance developer productivity but also democratize software engineering for a broader audience. We'll show that software development has evolved from 0-1 code creation to an iterative workflow of plan, generate with AI, modify, and repeat. Students will master both the theory behind traditional software engineering challenges and the cutting-edge AI-powered tools solving them today.

Topics: agentic development; software development; ai tooling

CS61A: Structure and Interpretation of Computer Programs (2021) 🎥🏷⌨️⚙️

Course Link & Solutions

An introduction to programming and computer science focused on abstraction techniques as a means to manage program complexity. The course exposes students to programming paradigms, including functional, object-oriented, and declarative approaches. It includes an introduction to the asymptotic analysis of algorithms. There are several significant programming projects.

Topics: procedural abstraction; control abstraction using recursion; higher-order functions; generators; streams; data abstraction; language abstraction

Programming Languages

Programming Languages in Coursera (2013) 🎥🏷⌨️⚙️

Course Link & Solutions

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language -- and in learning new ones. It will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming.

Topics: SML; Racket; Ruby; functional programming; higher-order functions; pattern-matching; delayed evaluation; macros; object-oriented programming; generics; subtype; bounded polymorphism

Haskell Mooc

Course Link & Solutions

This is an online course on functional programming that uses the Haskell programming language, which is aimed at beginners who wish to learn functional programming, but also at people who have experience with functional programming and want to learn Haskell in particular. The course assumes no previous knowledge, but knowing at least one programming language beforehand will make the course easier.

Topics: Haskell; functional programming; lazy evaluation; functor; applicative; monad; monoid

CS110L: Safety in Systems Programming (2020) 🎥🏷⌨️⚙️

Course Link & Solutions

This class is focused on safety and robustness in systems programming: Where do things often go wrong in computer systems? How can we avoid common pitfalls? We will use the Rust programming language as a vehicle to teach mental models and paradigms that have been shown to be helpful in preventing errors, and we will look at how these features have made their way back into C++.

Topics: error handling; memory safety; basic and intermediate rust programming; smart pointers; information security; scalability and availability.

CIS198. Rust Programming (2016) 🏷⌨️⚙️

Course Link & Solutions

In this course, we will cover what makes Rust so unique and apply it to practical systems programming problems.

Topics: traits and generics; memory safety; move semantics; borrowing; lifetimes; rich macro system; closures; concurrency.

Data structure and algorithms

Understanding classical algorithms is certainly helpful for technical interviews. However, many advanced and highly specialized algorithms are unlikely to be used in your day-to-day work.

6.006. Introduction to algorithms (2020) 🎥🏷

Course Link

This is an introductory course covering elementary data structures (dynamic arrays, heaps, balanced binary search trees, hash tables) and algorithmic approaches to solve classical problems (sorting, graph searching, dynamic programming). Introduction to mathematical modeling of computational problems, as well as common algorithms, algorithmic paradigms, and data structures used to solve these problems. Emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.

Topics: sorting; binary tree; binary heaps; bread-first search; depth-first search; single source shortest path; all pairs shortest path; dynamic programming

Data Science

Regardless of your profession, I recommend learning some data analysis. It's useful not only at work, but also in everyday life.

Data100: Principles and Techniques of Data Science (2021) 🎥🏷⌨️⚙️

Course Link & Solutions

This intermediate-level class bridges between Data 8 and upper-division computer science and statistics courses as well as methods courses in other fields. In this class, we explore key areas of data science, including question formulation.

Topics: data collection and cleaning; visualization; statistical inference; predictive modeling; and decision making

ML & DL

Machine learning in Coursera (2022) 🎥🏷⌨️⚙️

Course Link & Solutions. The assignments are not the latest version.

This beginner-friendly program will teach you the fundamentals of machine learning and how to use these techniques to build real-world AI applications. By the end of this Specialization, you will have mastered key concepts and gained the practical know-how to quickly and powerfully apply machine learning to challenging real-world problems.

Topics: supervised learning; unsupervised learning; reinforcement leanring; linear regression; linear classification; back-propagation; decision trees

CS224W: Machine Learning with Graphs (2021) 🎥🏷⌨️

Course Link & Solutions

Complex data can be represented as a graph of relationships between objects. Such networks are a fundamental tool for modeling social, technological, and biological systems. This course focuses on the computational, algorithmic, and modeling challenges specific to the analysis of massive graphs. By means of studying the underlying graph structure and its features, students are introduced to machine learning techniques and data mining tools apt to reveal insights on a variety of networks.

Topics: representation learning and Graph Neural Networks; algorithms for the World Wide Web; reasoning over Knowledge Graphs; influence maximization; disease outbreak detection; social network analysis.

MLSys

10-414/714: Deep Learning Systems: Algorithms and Implementation (2022) 🎥🏷⌨️⚙️

Course Link & Solutions

The goal of this course is to provide students with an understanding and overview of the “full stack” of deep learning systems, ranging from the high-level modeling design of modern deep learning systems, to the basic implementation of automatic differentiation tools, to the underlying device-level implementation of efficient algorithms. Throughout the course, students will design and build from scratch a complete deep learning library, capable of efficient GPU-based operations, automatic differentiation of all implemented functions, and the necessary modules to support parameterized layers, loss functions, data loaders, and optimizers.

Topics: automatic differentiation; CNN implementation; RNN/LSTM implementation; various modules/operators implementation

Course Map

mindmap
CS
  Tools
    MS)Missing-semester(
  Basic Programming
    General
      CS61A)"`CS61A`"(
      CS146S)"`CS146S`"(
    Rust
      CS100L)"`CS100L`"(
      CIS198)"`CIS198`"(
    Haskell
      Hmooc)"`Haskell-mooc`"(
  Programming Languages
    pl)"`Programming Languages (Coursera)`"(
  Data Structure and Algorithms
    6.006)"`MIT 6.006`"(
  Data Science
    Data100)"`Data100`"(
  ML&DL
    ng)"`Machine Learning (Coursera)`"(
    CS224W)"`CS224W`"(
  MLsys
    10414)"`10-414/714`"(
Loading

About

A collection of cs-course I have learned 🤗

Topics

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors