• CS 4444

    Introduction to Parallel Computing
     Rating

    3.67

     Difficulty

    4.33

     GPA

    3.04

    Last Taught

    Fall 2025

    Introduces the student to the basics of high-performance parallel computing and application development for massively parallel processors (e.g., GPUs). The course will also introduce the internal architecture of these parallel processors and its impact on performance.  Prerequisite:  CS 3100 and CS 3130 with a C- or better.

  • CS 3120

    Discrete Mathematics and Theory 2
     Rating

    3.13

     Difficulty

    4.23

     GPA

    3.14

    Last Taught

    Fall 2025

    The goal of this course is to understand the fundamental limits on what can be efficiently computed. These limits reveal properties about information, communication, and computing, as well as practical issues about how to solve problems. Introduces computation theory including grammars, automata, and Turing machines. Prereq: CS 3100 with a grade of C- or better

  • CS 2130

    Computer Systems and Organization 1
     Rating

    2.62

     Difficulty

    4.40

     GPA

    3.20

    Last Taught

    Fall 2025

    This course covers topics on the computer architecture abstraction hierarchy ranging from a step above silicon to a step below modern programming languages. Students in this course will learn to write low-level code in C and Assembly, how data is stored in memory, the basics of hardware design from gates and registers through general-purpose computers, and legal, ethical, and security issues related to these topics. CS 1100 - CS 1199 and either familiarity with Java, C++, or another C-like language, or concurrent enrollment in CS 2100

  • CS 3140

    Software Development Essentials
     Rating

    3.47

     Difficulty

    3.24

     GPA

    3.26

    Last Taught

    Fall 2025

    A first course in software engineering and software construction, this course focuses on bringing the programming concepts learned in a first course in data structures and algorithms together to begin to teach students how to build more complex systems. The course covers introductory topics in testing, software design principles, design patterns, functional programming, and data storage and manipulation. Completed CS 2100 with a C- or better.

  • CS 3130

    Computer Systems and Organization 2
     Rating

    3.13

     Difficulty

    4.48

     GPA

    3.28

    Last Taught

    Fall 2025

    A second course in computer systems, this course will explore a more realistic model of processors and how they and the operating system work together to provide various functionality we depend on as application programmers. Course topics include permission models, system architecture, concurrency, virtual memory, cryptographic primitives, and TCP/IP networking. Prereq CS 2100 and CS 2130 with a grade of C- or better

  • CS 3100

    Data Structures and Algorithms 2
     Rating

    3.10

     Difficulty

    4.38

     GPA

    3.32

    Last Taught

    Fall 2025

    Builds upon previous analysis of algorithms and the effects of data structures on them. Algorithms selected from areas such as searching, shortest paths, greedy algorithms, backtracking, divide-and-conquer, dynamic programming, and machine learning. Analysis techniques include asymptotic worst case, expected time, amortized analysis, and reductions. Prerequisites: CS 2100 & CS 2120; APMA 1090 or MATH 1310 or MATH 1210 or equivalent. CS 3140 is recommended.

  • CS 4630

    Defense Against the Dark Arts
     Rating

    3.23

     Difficulty

    3.31

     GPA

    3.32

    Last Taught

    Fall 2025

    Viruses, worms, and other malicious software are an ever-increasing threat to computer systems. There is an escalating battle between computer security specialists and the designers of malicious software. This course provides an essential understanding of the techniques used by both sides of the computer security battle. Prerequisite: CS 3710 with a grade of C- or better

  • CS 4457

    Computer Networks
     Rating

    3.50

     Difficulty

    3.00

     GPA

    3.34

    Last Taught

    Fall 2025

    A first course in communication networks for upper-level undergraduate students. Topics include the design of modern communication networks; point-to-point and broadcast network solutions; advanced issues such as Gigabit networks; ATM networks; and real-time communications. Cross-listed as ECE 4457. Prerequisite: CS 3330 or CS 2501 topic "COA 2" or ECE 3430 or ECE 4435 or ECE 3502 topic "ECR II" or CS 3130. Must complete CS courses with a grade of C- or better.

  • CS 1110

    Introduction to Programming
     Rating

    3.97

     Difficulty

    3.13

     GPA

    3.41

    Last Taught

    Fall 2025

    A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking. No previous programming experience required. Note: CS 1110, 1111, 1112, 1113, and 1120 provide different approaches to teaching the same core material; students may only receive credit for one of these courses. Students may not enroll if CS 2100 or CS 3140 has been completed.

  • CS 2120

    Discrete Mathematics and Theory 1
     Rating

    3.36

     Difficulty

    2.67

     GPA

    3.44

    Last Taught

    Fall 2025

    Introduces discrete mathematics and proof techniques involving first order predicate logic and induction. Application areas include sets, tuples, functions, relations, and combinatorial problems. Prereq: Must have completed CS 1110 or CS 1111 or CS 1112 or CS 1113 with a grade of C- or better OR successfully completed the CS 1110 or CS 2100 place out test.