Giter VIP home page Giter VIP logo

matthewsot / cs240lx-22spr Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dddrrreee/cs240lx-22spr

0.0 2.0 0.0 91.86 MB

cs240lx class repo. except in very rare cases, cs140e is a hard requirement.

License: MIT License

Shell 0.15% JavaScript 6.49% C++ 0.92% Python 0.08% C 83.22% Lua 0.06% D 1.38% Verilog 0.06% Go 0.50% Assembly 0.78% SystemVerilog 0.42% Makefile 2.59% HTML 2.44% CMake 0.10% LLVM 0.12% Zig 0.68%

cs240lx-22spr's Introduction

CS240lx: advanced operating system lab, accelerated

Engler + Akshay, Spr 2022.

tl;dr index:

This is a implementation-heavy, lab-based class that will cover similar topics as CS240 --- threads, virtual memory, file systems and distributed systems --- but by writing code versus discussing papers. After taking an initial operating systems course you are often left in the odd situation of having spent significant time getting the background knowledge needed to do interesting actions, but not being left with enough time to actually do them. This course attacks this problem by assuming basic knowledge and using it as a springboard to advance quickly through a set of powerful, useful techniques that even advanced practioners can be ignorant of.

We will write custom code from scratch for the widely-used, ARM-based raspberry pi; our code will run "bare-metal" without an operating system, which means we can do interesting things without constantly fighting with a lumbering OS that cannot get out of its own way.

By combining research insights (many unpublished) and our our lightweight bare-metal code we will be in the unusual position of having foundational abilities that most people have assumed are in-practice impossible. As one example, we will implement fast, flexible exception handling and then use this ability to build a variety of tools that find race conditions, check code correctness, and memory corruption. By using exceptions rather than binary rewriting we can build tools that find similar errors as Purify / Valgrind, but can be implemented in merely hundreds rather than hundreds of thousands of lines of code; our tools will also be faster and more extensible.

Our initial plan was to do ten projects, one per week, where each project covers two labs of (at a minimum) several hours each and a non-trivial amount of outside work.

The course workload is significant, but I will aim to not waste your time. CS140E is strongly encouraged as a prerequisite, but a sufficiently talented and motivated implementor can make up for its lack.

I'm teaching this course because doing CS140E was was so much fun. Each time I drove into lab, I would get an idea for one or two additional labs I really wanted to do, and each time I wrote up an lab there would be a long NOTES.txt of additional ideas. After last year and this, I have a big document of all the possible ideas. This class will implement the ones that seem the most interesting.

Also, we have Akshay for another quarter as a TA so it seems sensible to exploit that happy fact!

cs240lx-22spr's People

Contributors

dddrrreee avatar nerdysouth avatar zyedidia avatar parthiv-krishna avatar manya-bansal avatar akshay-srivatsan avatar dghosef avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.