UNIX Weapons School: Difference between revisions

No edit summary
No edit summary
Tags: Mobile edit Mobile web edit
 
(3 intermediate revisions by the same user not shown)
Line 9: Line 9:
UNIX Weapons School is an intense elective practicum. '''Its goal is to train formidably competent systems programmers.'''
UNIX Weapons School is an intense elective practicum. '''Its goal is to train formidably competent systems programmers.'''


''update from 2021: this class would now absolutely go into io_uring and BPF. also SSDs and the resultant changes to the I/O paradigm. there would probably be some talk of Spectre/Meltdown in conjunction with the architecture lecture, also BIG.little and core scheduling. probably a bit more coverage of ARM details, though i'm not yet ready to yeet the x86 stuff. the "future of systems programming section" would be updated. a bit more talk about distributed systems, probably, and i'd discard the current material about machine learning. other than that, this still pretty much stands.''
''update from 2021: this class would now absolutely go into [[Io_uring|io_uring]] and [[eBPF]]. also SSDs and the resultant changes to the I/O paradigm. there would probably be some talk of Spectre/Meltdown in conjunction with the architecture lecture, also BIG.little and core scheduling. probably a bit more coverage of [[ARM]] details, though i'll not yet yeet the x86 stuff. the "future of systems programming section" would be updated. a bit more talk about distributed systems, probably, and i'd discard the current material about machine learning. other than that, this still pretty much stands.''


==Lectures thus far==
==Lectures thus far==
Line 60: Line 60:
<br>            -- Dante Alighieri, ''The Inferno'', Canto III, 14-15</blockquote>
<br>            -- Dante Alighieri, ''The Inferno'', Canto III, 14-15</blockquote>


[https://www.youtube.com/watch?v=PerFdIrDBBQ Because I am hard, you will not like me. But the more you hate me, the more you will learn.]
[https://www.youtube.com/watch?v=tHxf17yJsKs Because I am hard, you will not like me. But the more you hate me, the more you will learn.]


Each project will be evaluated for both correctness (in terms of unit tests passed) and performance (on several reference platforms). Performance of incorrect code is, of course, moot. I will make each project public two weeks prior to its due date, and provide a set of basic unit tests and a web-accessible oracular reference implementation (you can submit inputs and receive outputs). For details of grading, see the first week's slides. I am using a scheme designed to maximize competition and conflict between class members, which I hope will reduce cheating, lead to great personal exertions, and possibly get a chair thrown.
Each project will be evaluated for both correctness (in terms of unit tests passed) and performance (on several reference platforms). Performance of incorrect code is, of course, moot. I will make each project public two weeks prior to its due date, and provide a set of basic unit tests and a web-accessible oracular reference implementation (you can submit inputs and receive outputs). For details of grading, see the first week's slides. I am using a scheme designed to maximize competition and conflict between class members, which I hope will reduce cheating, lead to great personal exertions, and possibly get a chair thrown.