course number | instructor | title |
CS 4284 | DS Nikolopoulos | Systems & Networking Capstones |
Fall 2020’'s offering of the Systems and Networking Capstone course will address the challenge of scaling the design and implementation of key data structures to handle ever-increasing data set sizes and every-increasing system heterogeneity in the architecture and capabilities of processor cores, memory systems and networks. Your challenge will be to scale an important data structure of the OS kernel (e.g. paging and translation structures, task structures, buffering and I/O structures), or a system-level library (e.g. distributed hash tables, key-value stores, ledgers, B+ trees, large graphs, sorting arrays) so that you maximize the throughput of operations to the data structure when the contents of the data structure push the system’s capacity limits. At the end of the class, everyone will have written some robust system software either at the OS or at user level, measured the performance and scalability of this software along multiple dimensions, and if you feel adventurous enough, break a standing record of performance and/or produce a publishable piece of computer systems and networking research.
The class will be project intensive.100% of the project’s grade will be based on a term-long team project. There will be no homework or exams. Grading is based on the performance in the project, more so in terms of demonstrating your creativity, your understanding of how computing systems work, perform and scale, and your robust system and software engineering skills, than the actual end result, i.e. how your solution performs in the end. Your grade will include a component for a final presentation and a poster presentation.
The course may be sponsored by a number of technology companies which may also provide mentoring support to your teams. The official prerequisite for the class is a C or better in CS3214. Realistically, this class is for you if you want to take a deep dive in understanding how computing systems work and if you enjoy designing, implementing, breaking --that’s correct, breaking-- and fixing computing systems.
Prerequisite: A grade of C or better in CS 3114 and CS 3214.