Difference between revisions of "CS 3210"
m (Zxcv moved page CS 3210 - Design-Operating Systems to CS 3210 over a redirect without leaving a redirect) |
|||
(7 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
+ | '''CS 3210''', formally known as '''Design of Operating Systems''', is a 3-credit Computer Science class taken as a thread requirement for [[Systems and Architecture]] threads (for both CS and CompE majors). It provides a deep dive into the structure, function, and design of the kernel of a modern Operating System. It is preceded by [[CS 2200]]/[[ECE 3058]] and succeeded by [[CS 4210]]/[[CS 6210]]. |
||
⚫ | |||
− | CS 3210 is a 3 credit hour class taken by Systems and Architecture threads (CS/CompE). It has no lab or recitation period. |
||
+ | {{Course Links|subject=CS|number=3210}} |
||
− | This class is heavily project-based. |
||
⚫ | |||
+ | CS 3210 is a CS class notorious for its extreme workload, especially for those with minimal experience in working with a kernel. The class, like most 3xxx and 4xxx level CS classes, are highly project based. Projects generally take well over 15 hours a week, and starting early, as well as asking for help, is encouraged. |
||
− | + | == Topics List == |
|
+ | # Bootloading |
||
− | This class teaches some Operating Systems (OS) concepts such as: |
||
⚫ | |||
− | |||
− | # Bootloading (how the processor wakes up and loads the OS kernel) |
||
⚫ | |||
# Process Scheduling |
# Process Scheduling |
||
− | # File |
+ | # File Systems |
− | # Networking |
+ | # Networking and OS |
+ | == Prerequisite Knowledge == |
||
− | ==== How it Fits into the Curriculum ==== |
||
+ | |||
+ | === Computer Systems === |
||
+ | As CS 2200/ECE 3058 is a direct prerequisite of CS 3210, the material in CS 2200 is highly important for success in the class. Extra importance is given to the Operating Systems and Networking topics from CS 2200, and these topics (especially the OS topics) are further developed in this class. |
||
+ | |||
+ | === Computer Organization === |
||
+ | [[CS 2110]] (or [[ECE 2035]]), while not a direct prerequisite for this class, is a prerequisite for CS 2200/ECE 3058 and an implied prerequisite for CS 3210. As the class is done in C for the majority of semesters, extensive experience in both C and assembly programming is required. Other computer architecture topics, such as the stack and interrupts, are also highly useful. |
||
+ | |||
+ | === Processor Design === |
||
+ | CS 3220, while not required or recommended, is suggested by some professors as a prerequisite for this course. It is however, not required, and taking CS 3210 before or with (although it will be an obscene amount of work!) CS 3220 is fine. |
||
+ | |||
+ | == Future Outlook == |
||
CS 3210 is a required class for Systems and Architecture Threads (both CS and CompE), and is generally taken in your third or fourth year. The class is only a prerequisite for Advanced Operating Systems ([[CS 4210]]/[[CS 6210]]) but is a gateway course to more advanced graduate level OS courses. |
CS 3210 is a required class for Systems and Architecture Threads (both CS and CompE), and is generally taken in your third or fourth year. The class is only a prerequisite for Advanced Operating Systems ([[CS 4210]]/[[CS 6210]]) but is a gateway course to more advanced graduate level OS courses. |
||
− | == |
+ | == Registration == |
CS 3210 is a regular class. This means there is no recitation or lab to register for. Just register for a lecture section. |
CS 3210 is a regular class. This means there is no recitation or lab to register for. Just register for a lecture section. |
||
Line 23: | Line 33: | ||
* C or higher in CS 2200 |
* C or higher in CS 2200 |
||
− | * C or higher in ECE 3057 (replaced with ECE 3058 in Fall 2021) |
||
* C or higher in ECE 3058 |
* C or higher in ECE 3058 |
||
+ | == Resources == |
||
− | === Majors that Require this Class === |
||
− | |||
− | * Computer Science (Systems and Architecture Threads) |
||
− | * Computer Engineering (Systems and Architecture Threads) |
||
− | |||
− | == Past Semesters == |
||
=== Fall 2020 === |
=== Fall 2020 === |
||
4 projects, 1 midterm, 1 final |
4 projects, 1 midterm, 1 final |
||
− | Projects were on [https://pdos.csail.mit.edu/6.828/2020/xv6.html |
+ | Projects were on [https://pdos.csail.mit.edu/6.828/2020/xv6.html xv6, a simple Unix-like teaching operating system], with much of the class material from the associated open-source textbook. |
− | + | xv6 is a simple teaching operating system with many features missing. In the class projects, you implement some of those missing features using the C programming language.<blockquote> |
|
− | "Overall, the projects were time-consuming but fair. The material is really interesting, and detailed project instructions along with a concise textbook and helpful lectures/office hours made those projects doable." - |
+ | "Overall, the projects were time-consuming but fair. The material is really interesting, and detailed project instructions along with a concise textbook and helpful lectures/office hours made those projects doable." - Alex P</blockquote> |
=== Spring 2020 "Rust-mester" === |
=== Spring 2020 "Rust-mester" === |
||
− | Apparently, the project was very difficult. It involved writing an OS kernel from scratch using the Rust programming |
+ | Apparently, the project was very difficult. It involved writing an OS kernel from scratch using the Rust programming language and testing it on a Raspberry Pi. |
[https://tc.gts3.org/cs3210/2020/spring/index.html Publicly available course webpage] |
[https://tc.gts3.org/cs3210/2020/spring/index.html Publicly available course webpage] |
||
+ | [[Category:Courses|^CS^CS]] |
Latest revision as of 07:49, 31 October 2022
CS 3210, formally known as Design of Operating Systems, is a 3-credit Computer Science class taken as a thread requirement for Systems and Architecture threads (for both CS and CompE majors). It provides a deep dive into the structure, function, and design of the kernel of a modern Operating System. It is preceded by CS 2200/ECE 3058 and succeeded by CS 4210/CS 6210.
CS 3210 | |
---|---|
Course Links | |
Course Critique | |
OSCAR Fall 2023 |
Workload[edit | edit source]
CS 3210 is a CS class notorious for its extreme workload, especially for those with minimal experience in working with a kernel. The class, like most 3xxx and 4xxx level CS classes, are highly project based. Projects generally take well over 15 hours a week, and starting early, as well as asking for help, is encouraged.
Topics List[edit | edit source]
- Bootloading
- Memory Management
- Process Scheduling
- File Systems
- Networking and OS
Prerequisite Knowledge[edit | edit source]
Computer Systems[edit | edit source]
As CS 2200/ECE 3058 is a direct prerequisite of CS 3210, the material in CS 2200 is highly important for success in the class. Extra importance is given to the Operating Systems and Networking topics from CS 2200, and these topics (especially the OS topics) are further developed in this class.
Computer Organization[edit | edit source]
CS 2110 (or ECE 2035), while not a direct prerequisite for this class, is a prerequisite for CS 2200/ECE 3058 and an implied prerequisite for CS 3210. As the class is done in C for the majority of semesters, extensive experience in both C and assembly programming is required. Other computer architecture topics, such as the stack and interrupts, are also highly useful.
Processor Design[edit | edit source]
CS 3220, while not required or recommended, is suggested by some professors as a prerequisite for this course. It is however, not required, and taking CS 3210 before or with (although it will be an obscene amount of work!) CS 3220 is fine.
Future Outlook[edit | edit source]
CS 3210 is a required class for Systems and Architecture Threads (both CS and CompE), and is generally taken in your third or fourth year. The class is only a prerequisite for Advanced Operating Systems (CS 4210/CS 6210) but is a gateway course to more advanced graduate level OS courses.
Registration[edit | edit source]
CS 3210 is a regular class. This means there is no recitation or lab to register for. Just register for a lecture section.
Prerequisites[edit | edit source]
At least one of the following:
- C or higher in CS 2200
- C or higher in ECE 3058
Resources[edit | edit source]
Fall 2020[edit | edit source]
4 projects, 1 midterm, 1 final
Projects were on xv6, a simple Unix-like teaching operating system, with much of the class material from the associated open-source textbook.
xv6 is a simple teaching operating system with many features missing. In the class projects, you implement some of those missing features using the C programming language.
"Overall, the projects were time-consuming but fair. The material is really interesting, and detailed project instructions along with a concise textbook and helpful lectures/office hours made those projects doable." - Alex P
Spring 2020 "Rust-mester"[edit | edit source]
Apparently, the project was very difficult. It involved writing an OS kernel from scratch using the Rust programming language and testing it on a Raspberry Pi.