• CS 1010

    Introduction to Information Technology
     Rating

    3.69

     Difficulty

    2.12

     GPA

    3.61

    Last Taught

    Spring 2025

    How computers create, preserve, manipulate and communicate information and the concepts and tools used to that end. Units include how computers work, web technologies, creating web pages, algorithms and logic, basic programming, and solving problems with spreadsheets. Students will learn to recognize computational problems and develop basic skill sets to solve future problems in their discipline of study. No prior programming experience required. Cannot be taken for credit by students in SEAS.

  • CS 1110

    Introduction to Programming
     Rating

    3.98

     Difficulty

    3.14

     GPA

    3.41

    Last Taught

    Spring 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 1112

    Introduction to Programming
     Rating

    4.12

     Difficulty

    2.39

     GPA

    3.45

    Last Taught

    Spring 2025

    A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking. Prerequisite: Students must have no previous programming experience. 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 1113

    Introduction to Programming
     Rating

    3.83

     Difficulty

    2.50

     GPA

    3.50

    Last Taught

    Spring 2025

    A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking. Special domain topics and materials will differ by section and semester. 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 2100

    Data Structures and Algorithms 1
     Rating

    3.26

     Difficulty

    3.09

     GPA

    3.64

    Last Taught

    Spring 2025

    A second course in computing with an emphasis on foundational data structures and program analysis. The course provides a introduction to object oriented programming and the Java programming language, concurrency, and inheritance / polymorphism. Additionally, foundational data structures and related algorithms / analysis are studied. These include lists, stacks, queues, trees, hash tables, and priority queues. Prereq: CS 1100 - CS 1199

  • CS 2120

    Discrete Mathematics and Theory 1
     Rating

    3.38

     Difficulty

    2.62

     GPA

    3.50

    Last Taught

    Spring 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: CS 1100 - CS 1199

  • CS 2130

    Computer Systems and Organization 1
     Rating

    2.56

     Difficulty

    4.36

     GPA

    3.13

    Last Taught

    Spring 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 2501

    Special Topics in Computer Science
     Rating

    3.71

     Difficulty

    2.69

     GPA

    3.57

    Last Taught

    Spring 2025

    Content varies, depending on instructor interests and the needs of the Department. Taught strictly at the undergraduate level. Prerequisite: Instructor permission; additional specific requirements vary with topics.

  • CS 2910

    CS Education Practicum
     Rating

    3.83

     Difficulty

    1.00

     GPA

    3.96

    Last Taught

    Spring 2025

    An overview of computer science education for undergraduate students. Topics include ethics, diversity, tutoring and teaching techniques, and classroom management. Students enrolled in this course serve as a teaching assistant for a computer science course as part of their coursework.

  • CS 3100

    Data Structures and Algorithms 2
     Rating

    3.51

     Difficulty

    4.36

     GPA

    3.40

    Last Taught

    Spring 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 2150 or (CS 2100 & CS 2120); APMA 1090 or MATH 1210 or MATH 1310 or equivalent. CS 3140 is recommended.

  • CS 3120

    Discrete Mathematics and Theory 2
     Rating

    3.08

     Difficulty

    4.13

     GPA

    3.22

    Last Taught

    Spring 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 4102 or CS 3100 with a grade of C- or better

  • CS 3130

    Computer Systems and Organization 2
     Rating

    2.80

     Difficulty

    4.78

     GPA

    3.28

    Last Taught

    Spring 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 3140

    Software Development Essentials
     Rating

    3.85

     Difficulty

    3.21

     GPA

    3.31

    Last Taught

    Spring 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 3205

    HCI in Software Development
     Rating

    2.51

     Difficulty

    2.94

     GPA

    3.51

    Last Taught

    Spring 2025

    Human-computer interaction and user-centered design in the context of software engineering. Examines the fundamental principles of human-computer interaction. Includes evaluating a system's usability based on well-defined criteria; user and task analysis, as well as conceptual models and metaphors; the use of prototyping for evaluating design alternatives; and physical design of software user-interfaces, including windows, menus, and commands.Prerequisite: CS 2110 or CS 2100 with a grade of C- or better

  • CS 3240

    Software Engineering
     Rating

    3.24

     Difficulty

    2.69

     GPA

    3.64

    Last Taught

    Spring 2025

    Analyzes modern software engineering practice for multi-person projects; methods for requirements specification, design, implementation, verification, and maintenance of large software systems; advanced software development techniques and large project management approaches; project planning, scheduling, resource management, configuration control, and documentation. Prerequisite: CS 2150 or CS 3140 with a grade of C- or better

  • CS 3250

    Software Testing
     Rating

    3.42

     Difficulty

    2.50

     GPA

    3.50

    Last Taught

    Spring 2025

    An introduction to testing for assuring software quality. Covers concepts and techniques for testing software, including testing at the unit, module, subsystem, and system levels; automatic and manual techniques for generating and validating test data; the testing process; static vs. dynamic analysis; functional testing; inspections; testing in specific application domains; and reliability assessment.Prerequisite: CS 2150 or (CS 2100 and CS 2120) with a grade of C- or better

  • CS 3501

    Special Topics in Computer Science
     Rating

    3.43

     Difficulty

    3.71

     GPA

    3.47

    Last Taught

    Spring 2025

    Content varies, depending on instructor interests and the needs of the Department. Taught strictly at the undergraduate level. Prerequisite: Instructor permission; additional specific requirements vary with topics.

  • CS 3710

    Introduction to Cybersecurity
     Rating

    4.32

     Difficulty

    1.96

     GPA

    3.72

    Last Taught

    Spring 2025

    Introduces students to the fields of cybersecurity. Both non-technical issues, such as ethics and policy, and technical issues are covered. Students see and experiment with a wide range of areas within cybersecurity, including: binary exploitation, encryption, digital forensics, networks, and modern threats. Prerequisites: CS 2150 or (CS 2100 or CS 2100 place out test and CS 2130) with a grade of C- or better

  • CS 4330

    Advanced Computer Architecture
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    Provides an overview of modern microprocessor design. The topics covered in the course will include the design of super-scalar processors and their memory systems, and the fundamentals of multi-core processor design. Prerequisite: CS 3330 with a grade of C- or better

  • CS 4414

    Operating Systems
     Rating

    3.06

     Difficulty

    4.32

     GPA

    2.95

    Last Taught

    Spring 2025

    Analyzes process communication and synchronization; resource management; virtual memory management algorithms; file systems; and networking and distributed systems. Prerequisite: CS 3330 or (CS 2501 COA 2 & CS 2150) or (CS 3130 and CS 3100) with a grade of C- or better or ECE 3430 or ECE 3502 Embedded Computing & Robotics 2

  • CS 4457

    Computer Networks
     Rating

    3.65

     Difficulty

    2.94

     GPA

    3.36

    Last Taught

    Spring 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 4501

    Special Topics in Computer Science
     Rating

    3.75

     Difficulty

    3.03

     GPA

    3.61

    Last Taught

    Spring 2025

    Content varies annually, depending on instructor interests and the needs of the department. Similar to CS 5501 and CS 7501, but taught strictly at the undergraduate level. Prerequisite: Instructor permission; additional specific requirements vary with topics.

  • CS 4630

    Defense Against the Dark Arts
     Rating

    3.18

     Difficulty

    3.27

     GPA

    3.32

    Last Taught

    Spring 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 4640

    Programming Languages for Web Applications
     Rating

    3.43

     Difficulty

    3.30

     GPA

    3.56

    Last Taught

    Spring 2025

    Presents programming languages and implementations used in developing web applications. Both client and server side languages are presented as well as database languages. In addition, frameworks that enable interactive web pages are discussed as well as formatting languages. Language features and efficiencies including scoping, parameter passing, object orientation, just in time compilation and dynamic binary translation are included. Prerequisite: CS 2150 or CS 3140 with a grade of C- or better

  • CS 4710

    Artificial Intelligence
     Rating

    3.31

     Difficulty

    3.11

     GPA

    3.61

    Last Taught

    Spring 2025

    Introduces artificial intelligence. Covers fundamental concepts and techniques and surveys selected application areas. Core material includes state space search, logic, and resolution theorem proving. Application areas may include expert systems, natural language understanding, planning, machine learning, or machine perception. Provides exposure to AI implementation methods, emphasizing programming in Common LISP. Prerequisite: CS 2150 or CS 3100 with a grade of C- or better

  • CS 4720

    Mobile Application Development
     Rating

    3.05

     Difficulty

    3.14

     GPA

    3.67

    Last Taught

    Spring 2025

    Mobile computing devices have become ubiquitous in our communities. In this course, we focus on the creation of mobile solutions for various modern platforms, including major mobile operating systems. Topics include mobile device architecture, programming languages, software engineering, user interface design, and app distribution. Prerequisite: CS 2150 or CS 3140 with a grade of C- or better

  • CS 4730

    Computer Game Design
     Rating

    4.50

     Difficulty

    3.63

     GPA

    3.60

    Last Taught

    Spring 2025

    This course will introduce students to the concepts and tools used in the development of modern 2-D and 3-D real-time interactive computer video games. Topics covered in this include graphics, parallel processing, human-computer interaction, networking, artificial intelligence, and software engineering. Prerequisite: CS 2150 or CS 3140 with a grade of C- or better

  • CS 4740

    Cloud Computing
     Rating

    2.88

     Difficulty

    2.24

     GPA

    3.61

    Last Taught

    Spring 2025

    Investigates the architectural foundations of the various cloud platforms, as well as examining both current cloud computing platforms and modern cloud research. Student assignments utilize the major cloud platforms. Prerequisite: CS 2150 or CS 3140 with a grade of C- or better

  • CS 4750

    Database Systems
     Rating

    3.45

     Difficulty

    2.28

     GPA

    3.73

    Last Taught

    Spring 2025

    Introduces the fundamental concepts for design and development of database systems. Emphasizes relational data model and conceptual schema design using ER model, practical issues in commercial database systems, database design using functional dependencies, and other data models. Develops a working relational database for a realistic application. Prerequisite: CS 2150 or (CS 2120 and 3140) with a grade of C- or better

  • CS 4760

    Network Security
     Rating

    2.61

     Difficulty

    3.00

     GPA

    3.55

    Last Taught

    Spring 2025

    This course covers the principles of secure network communications and the application of network security. Topics include: attack types, attack surfaces, attack phases, network security devices.(a)symmetric key encryption, cryptographic hash function, authentication/identification techniques, key distribution, and data integrity assurance. Also, currently used security mechanisms and protocols will be discussed. Prerequisite: CS 3710 with a grade of C- or better

  • CS 4774

    Machine Learning
     Rating

    3.31

     Difficulty

    3.00

     GPA

    3.75

    Last Taught

    Spring 2025

    An introduction to machine learning: the study of algorithms that improve their performance through experience. Covers both machine learning theory and algorithms. Introduces algorithms, theory, and applications related to both supervised and unsupervised learning, including regression, classification, and optimization and major algorithm families for each.Prerequisites: CS 2150 or CS 3100 with a grade of C- or better; APMA 3100, APMA 3110, MATH 3100, or equivalent and Math 3350 or APMA 3080 or equivalent

  • CS 4790

    Cryptocurrency
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    This course is a general introduction to cryptocurrencies and blockchain applications. Students will understand the theoretical concepts that underlay cryptocurrencies, and implement both their own cryptocurrencies as well as develop applications that run on existing cryptocurrencies. Students will see the ethics, legal, and policy aspects pertaining to the subject. Prerequisite: CS 3100 with a grade of C- or better

  • CS 4980

    Capstone Research
     Rating

     Difficulty

     GPA

    3.91

    Last Taught

    Spring 2025

    This course is one option in the CS fourth-year thesis track. Students will seek out a faculty member as an advisor, and do an independent project with said advisor. Instructors can give the 3 credits across multiple semesters, if desired. This course is designed for students who are doing research, and want to use that research for their senior thesis. Note that this track could also be an implementation project, including a group-based project.Prerequisite: CS 2150 or CS 2501 topic DSA2 with a grade of C- or higher, and BSCS major

  • CS 4991

    Capstone Technical Report
     Rating

    3.33

     Difficulty

    1.00

     GPA

    Last Taught

    Spring 2025

    Supports the writing of the technical report component of the fourth-year thesis, credit for which is given in STS 4600. Students will write the report assuming a non-technical audience. The course is part of the CS 4XXX elective option in the fourth-year CS thesis track. BS CS 4th years (both first & second majors) and pre- or co-requisite STS 4500

  • CS 4993

    Independent Study
     Rating

    5.00

     Difficulty

    4.00

     GPA

    3.77

    Last Taught

    Spring 2025

    In-depth study of a computer science or computer engineering problem by an individual student in close consultation with departmental faculty. The study is often either a thorough analysis of an abstract computer science problem or the design, implementation, and analysis of a computer system (software or hardware). Prerequisite: Instructor permission.

  • CS 4998

    Distinguished BA Majors Research
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    Required for Distinguished Majors completing the Bachelor of Arts degree in the College of Arts and Sciences. An introduction to computer science research and the writing of a Distinguished Majors thesis. Prerequisites: CS 2150 or CS 2501 topic DSA2 with a grade of C- or higher, and BSCS major

  • CS 6316

    Machine Learning
     Rating

     Difficulty

     GPA

    3.87

    Last Taught

    Spring 2025

    This is a graduate-level machine learning course. Machine Learning is concerned with computer programs that automatically improve their performance through experience. This course covers introductory topics about the theory and practical algorithms for machine learning from a variety of perspectives. Topics include supervised learning, unsupervised learning and learning theory. Prerequisite: Calculus, Basic linear algebra, Basic Probability and Basic Algorithm. Statistics is recommended. Students should already have good programming skills.

  • CS 6456

    Operating Systems
     Rating

    3.67

     Difficulty

    5.00

     GPA

    3.61

    Last Taught

    Spring 2025

    Covers advanced principles of operating systems. Technical topics include support for distributed OSs; microkernels and OS architectures; processes and threads; IPC; files servers; distributed shared memory; object-oriented OSs; reflection in OSs; real-time kernels; multiprocessing; multimedia and quality of service; mobile computing; and parallelism in I/O. Prerequisite: Undergraduate course in OS; CS 6354 or instructor permission.

  • CS 6465

    Human-Robot Interaction
     Rating

     Difficulty

     GPA

    3.98

    Last Taught

    Spring 2025

    Interactions between robots and humans are influenced by form, function and expectations. Quantitative techniques evaluate performance of specific tasks and functions. Qualitative techniques are used to evaluate the interaction and to understand expectations and perceptions of the human side of the interaction. Students use humanoid robots to develop and evaluate interactions within a specific application context.

  • CS 6501

    Special Topics in Computer Science
     Rating

    3.19

     Difficulty

    2.43

     GPA

    3.80

    Last Taught

    Spring 2025

    Course content varies by section and is selected to fill timely and special interests and needs of students. See CS 7501 for example topics. May be repeated for credit when topic varies. Prerequisite: Instructor permission.

  • CS 6763

    Cyber-Physical Systems: Formal Methods, Safety and Security
     Rating

     Difficulty

     GPA

    3.94

    Last Taught

    Spring 2025

    Cyber-physical systems (CPS) are smart systems that include co-engineered interacting networks of physical and computational components. This course will teach students the required skills to analyze the CPS that are all around us, so that when they contribute to the design of CPS, they are able to understand important safety and security aspects and feel confident designing and analyzing CPS systems.

  • CS 6888

    Software Analysis and Applications
     Rating

    4.00

     Difficulty

    4.00

     GPA

    3.47

    Last Taught

    Spring 2025

    This course provides an overview of the state of the art in software analysis including static and dynamic analysis techniques and verification and validation. It explores the various ways that the analyses are used to predict software behavior. The applications include inference, symbolic execution, fault localization, model checking, security and performance. The course combines theory with practical implementation and usage. Prerequisites: CS 3240.

  • CS 6890

    Industrial Applications
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    A graduate student returning from Curricular Practical Training can use this course to claim one credit hour of academic credit after successfully reporting, orally and in writing, a summary of the CPT experience to his/her academic advisor.

  • CS 6993

    Independent Study
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    Detailed study of graduate course material on an independent basis under the guidance of a faculty member.

  • CS 7993

    Independent Study
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    Detailed study of graduate course material on an independent basis under the guidance of a faculty member.

  • CS 7995

    Supervised Project Research
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    Formal record of student commitment to project research for the Master of Computer Science degree under the guidance of a faculty advisor.

  • CS 8897

    Graduate Teaching Instruction
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    For master's students who are teaching assistants.

  • CS 8999

    Thesis
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    Formal record of student commitment to thesis research for the Master of Science degree under the guidance of a faculty advisor. May be repeated as necessary.

  • CS 9897

    Graduate Teaching Instruction
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    For doctoral students who are teaching assistants.

  • CS 9999

    Dissertation
     Rating

     Difficulty

     GPA

    Last Taught

    Spring 2025

    Formal record of student commitment to doctoral research under the guidance of a faculty advisor. May be repeated as necessary.