The goal of CSE 201 is to introduce students to the C++ programming language, and the object-based view of software design. C++ is one of the most widely-used programming languages in the world, especially for system-level programming. Much of its power derives from its use of objects, packets of data and functionality that model things and concepts in the real world. 

Algorithms are at the heart of all computation.  Building on the algorithms the introduced in CS112, this course provides a solid foundation in modern algorithmics.  Students develop a deeper knowledge of the fundamental algorithms, an understanding of how they work, and an appreciation of how to implement them efficiently. They also learn how to reduce other problems related to these fundamentals.
Logic and Proofs (CSE 203) is an introduction to logic, a science that deals with the principles of validity of demonstration. Its goal is to familiarize students with formal methods for representing arguments and reasoning about them. This encompasses propositional calculus, first-order logic, and deduction systems, as well as the related technologies (e.g. automated provers, proof assistants) for building mechanized proofs. No prior knowledge in logic is required
This course investigates the design and organization of computers at their lowest level.  This encompasses computer hardware, and also the operating systems that provide an interface between most programs we write and use with the underlying machine and its network.

This course introduces different concepts in automata theory and formal languages, including formal proofs, deterministic and non-deterministic automata, regular expressions, regular languages, context-free grammars and languages, and Turing machines.

This course will introduce students to the architecture and skeleton required for implementing a protocol - and part of that will include creating multiple threads, and synchronized queues.