- Teacher: Nicolaus Correll
- Teacher: Michael Hoefer
- Teacher: Supriya Manikonda Keshavaiah Naidu
- Teacher: Jinyoung Park
- Teacher: Nikhith Sannidhi
- Teacher: PEI HSIU Yeh
- Course Assistant: Rahul Aedula
- Course Assistant: Kevin Barone
- Course Assistant: Kaleb Bishop
- Course Assistant: Morgan Byers
- Course Assistant: Filip Casey
- Course Assistant: Ashlyn Duy
- Course Assistant: Ben Erickson
- Course Assistant: Alberto Espinosa
- Course Assistant: Jerry Gammie
- Course Assistant: Bryce Ikeda
- Course Assistant: Yang Jiang
- Course Assistant: Even Laukli
- Course Assistant: Pragna Mandadi
- Course Assistant: Tyler Mccormick
- Course Assistant: Luis Mieses
- Course Assistant: Charlie Nevitt
- Course Assistant: Anuj Pasricha
- Course Assistant: Sagar Pathare
- Course Assistant: Spencer Paulissen
- Course Assistant: Tiffany Phan
- Course Assistant: Teo Price-Broncucia
- Course Assistant: Alex Ray
- Course Assistant: Alec Reed
- Course Assistant: Naga Sai Meenakshi Sistla
- Course Assistant: Maria Stull
- Course Assistant: Lita Suwattee
- Teaching Assistant: Thomas Beatty
- Teaching Assistant: Alexander Brimhall
- Teaching Assistant: Alex Fix
- Teaching Assistant: Mariam Gopalani
- Teaching Assistant: Isha Karki
- Teaching Assistant: Sean Kosman
- Teaching Assistant: Lizzie Scotty
In this course, students will:
- Document code including precondition/postcondition contracts for functions and invariants for classes.
- Create and recognize appropriate test data for simple problems, including testing boundary conditions and creating/running test cases.
- Design and test new classes using the principle of information hiding for the following data structures: array-based collections (including dynamic arrays), list-based collections (singly-linked lists, doubly-linked lists, circular-linked lists), stacks, queues, binary search trees, hash tables, graphs, and at least one balanced search tree.
- Identify the features and applications of common data structures, including records/structs, lists, stacks, queues, trees, graphs, and maps.
- Implement algorithms for standard operations on common data structures and discuss the complexity of the operations.
- Comment on the features of different traversal methods for trees and graphs, including pre-, post-, and in-order traversal of trees.
- Describe the implementation of hash tables, including algorithms for collision avoidance and resolution.
- Describe the principles of recursion and iteration, and implement recursive and iterative solutions for a problem.
- Formulate and implement solutions to problems using fundamental graph algorithms, including depth-first and breadth-first search and a shortest-path algorithm.
- Explain the features of at least one tree balancing algorithm and how tree balancing affects the efficiency of various binary search tree operations.
- Correctly use and manipulate pointer variables to change variables and build dynamic data structures.
- Explain the differences between dynamic and static data structure implementations, and justify the use of static and dynamic implementations in different applications.
- Practice explaining design choices and algorithm features in small-group settings.
- Teacher: Asa Ashraf
- Teacher: Krishna Sai Chemudupati
- Teacher: Sanskar Katiyar
- Teacher: Jingwei Li
- Teacher: Namratha Mysore Keshavaprakash
- Teacher: Shubham Rathi
- Teacher: Julia Romero
- Teacher: Shreyas Savanoor Ravindra
- Course Assistant: Trevor Grant
- Course Assistant: Daniel Harris
- Course Assistant: Chi-Hui Lin
- Course Assistant: Will Manning
- Course Assistant: Joseph Nam
- Course Assistant: Brian Noble
- Course Assistant: Alex Pedersen
- Course Assistant: Medha Rudra
- Course Assistant: Saiyma Sarmin
- Course Assistant: Gavin Thomas
- Course Assistant: Saurabh Totey
- Course Assistant: Lucy Van Kleunen
- Course Assistant: Ben Xiang
Covers how programs are represented and executed by modern computers, including low level machine representations of programs and data, an understanding of how computer components and the memory hierarchy influence performance.
Operating systems are an essential part of every
computing system and play a major role in determining the performance and
usability of the system. This course is an introductory course covering
the fundamental concepts in the design, implementation and evaluation of an
operating system. While the field of operating systems has been undergoing
rapid change, the fundamental concepts remain firmly clear. This course covers these fundamental concepts
comprised of device management, process management, memory management and
This course introduces students to UNIX and Linux System Administration. It includes topics such as: building & deploying systems from scratch, troubleshooting difficult system and network problems, software configuration, account management, basic
shell scripting, network configuration and the mitigation of common security vulnerabilities.
Covers the primary problem solving strategies, methods and tools needed for data-intensive programs using large collections of computers typically called "warehouse scale" or "data-center scale" computers. Examines methods and algorithms for processing data-intensive applications, methods for deploying and managing large collections of computers in an on-demand infrastructure and issues of large-scale computer system design. Recommended prerequisite: CSCI 4273. Same as CSCI 5253.
TTh 12:45pm-2pm Engineering Center ECCS 1B12 - This is a distance learning classroom