Skip to content

MartinLwx/cs-courses

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cs-courses

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

A collection of exercises in many courses 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

🎥 - Lecture videos available

🏷 - PPT/Notes/Reading available

⌨️ - Assignments/Homework/Projects available (coding rather than writing)

⚙️ - Autograde for assignments/homework/projects available

Finished

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

CS tools

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

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

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

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 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

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.

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

  • 6.006. Introduction to algorithms in OCW 🎥🏷 - 📅Spring-2020

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

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

Deep Learning

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

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.

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
    CS61A)"`CS61A`"(
    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`"(
  AI
    ng)"`Machine Learning (Coursera)`"(
    CS224W)"`CS224W`"(
  MLsys
    10414)"`10-414/714`"(
Loading

About

A collection of cs-course I have learned 🤗

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published