Undergraduate Computer Science
Undergraduate Computer Science
2025 Spring Term
Disclaimer
- This course listing is informational and does not guarantee availability for registration.
- Please click through to view the class schedule to see sections offered for your selected term.
- Sections may be full or not open for registration. Please use WINS if you wish to register for a course.
COMPUTER APPLICATIONS
COMPSCI 162
A thorough introduction to commonly used computer applications, covering word processing, spreadsheets, data storage and retrieval, and presentation software. Students will learn the vocabulary of computing, the concepts of computing and problem solving, and how computer applications can be applied to a wide range of problems.
INTRODUCTION TO COMPUTATIONAL THINKING
COMPSCI 165
This course introduces computational thinking and provides a broad high-level understanding of how computers and related technical developments are changing the world. Students will learn how computers are built and operated, and they will apply computational thinking skills such as algorithmic and procedural thinking, problem decomposition, pattern recognition, and abstraction to write programs and solve problems. Students will also study computing innovations such as the Internet, data and information, artificial intelligence and machine learning, human-computer interaction, and cryptography; and they will explore how these innovations affect privacy, security, intellectual property and other important issues.
INTRODUCTION TO PYTHON PROGRAMMING
COMPSCI 170
An introduction to computational thinking and computer programming using the Python language, with applications in science, business, education, and other areas. Students will develop structured programs based on simple algorithms that involve input, output, mathematical operations, decisions, and loops. No previous programming experience is needed.
INTRODUCTION TO JAVA
COMPSCI 172
This course teaches the essentials of object-oriented programming in Java. Students will learn to formulate solutions for real problems and implement those solutions in Java programs that employ objects and classes. Students will be introduced to object-oriented design, class construction, selection statements, loops, methods and message passing, debugging, arrays, string processing, and file processing.
INTRODUCTION TO C++
COMPSCI 174
This course teaches basic programming skills using the structured high-level language C++. Topics include basic input and output, declaration and use of variables, use of control statements, implementation of functions using value and reference parameters, debugging, arrays, classes, and objects. Students will write moderately complex applications using C++.
INTRODUCTION TO DATABASE AND THE WEB
COMPSCI 181
This course provides the student with a comprehensive working knowledge of a modern database package including the creation of a database, construction of a wide range of queries, use of forms, and report writing features. The course also gives an introduction to the creation of World Wide Web pages using the Extended Hypertext Markup Language (XHTML).
DISCRETE STRUCTURES
COMPSCI 215
The course offers a formal approach to the mathematics of Computer Science, including set theory, methods of proof, propositional logic, discrete probability, sequences, recurrence relations, introduction to graphs, and algorithmic analysis.
INTERMEDIATE JAVA
COMPSCI 220
This course teaches more advanced topics in object-oriented program design and the Java programming language. Coverage includes multi-dimensional arrays, methods, recursion and search/sort algorithms, error handling, strings, regular expressions, encapsulation, inheritance, polymorphism, generic types, file processing, event handling, and program debugging and testing. Coverage may also include databases, graphical user interfaces, or functional programming.
INTERMEDIATE PROGRAMMING IN C#
COMPSCI 221
This course introduces C#, a programming language that is widely used in software, web, game, and mobile development. Topics include basic syntax, classes, object-oriented programming (overloading, inheritance, polymorphism), multi-dimensional arrays, file input/output, recursion, lambda expressions, and LINQ. Basic software engineering knowledge including coding standards and testing will also be covered.
INTERMEDIATE C++
COMPSCI 222
This course will cover more advanced issues of C++, including memory management, pointers and user-defined data types. Topics will include reading and writing files; dynamic arrays and multi-dimensional arrays; recursion and search/sort algorithms; implementation of the principles of object oriented design including encapsulation, inheritance, polymorphism, and templates; and planning and testing. Students will write complex applications using C++.
DATA STRUCTURES
COMPSCI 223
This course introduces data structures, which is a fundamental concept of computer science and forms the backbone of various important algorithms. These algorithms are not only of immense theoretical importance, but also are key ingredients of various important real-time applications such as GPS and web-searching. The main topics include basic data structures (lists, stacks, queues, trees, and graphs), searching and sorting, shortest-path algorithms, and hashing. Students will write programs that implement a variety of data structures and algorithms.
COMPUTER ORGANIZATION AND ASSEMBLY PROGRAMMING
COMPSCI 271
This course covers an introduction to computer organization and the use of an assembly language based on a standard (RISC or CISC) processor architecture including writing, linking, and executing a program. Also covered are number systems, arithmetic and logical operations, Boolean algebra, logic circuits, basic hardware components, memory access, loops, declaring variables, interrupts, machine language, segments, stacks, procedure writing, and file handling.
INTRODUCTION TO ARTIFICIAL INTELLIGENCE
COMPSCI 332
This course introduces basic artificial intelligence principles including simple representation schemes, problem solving paradigms, constraint propagation, search strategies and learning approaches. Knowledge representation, natural language processing, gaming, machine learning and user modeling will be explored. Students should have written moderately complex computer programs in a high level language.
DIGITAL FORENSICS
COMPSCI 342
This course focuses on the procedures and techniques of digital forensics. It involves the preservation, identification, extraction and documentation of evidence stored on a computer. The detailed contents include general forensics procedure, computer crime law and digital evidence collection procedure, data collection, data recovery, file system analysis, evidence analysis, tools for forensics analysis, and basic internet application forensics.
CYBERSECURITY LAW AND POLICY
COMPSCI 353
This course will provide students exposure to the key legal and policy issues related to cybersecurity. It includes such topics as data security laws and enforcement actions, cybersecurity litigation, anti-hacking laws, cybersecurity and corporate governance, privacy law, the Fourth Amendment, surveillance, and international cybersecurity law.
INTRUSION DETECTION AND INCIDENT RESPONSE
COMPSCI 354
A blend of theoretical and practical knowledge on design and implementation of intrusion detection and incident response. Topics include intrusion prevention systems, anomaly and signature-based intrusion detection, host-based and network-based intrusion detection, tools for intrusion detection and response, automated and manual response to attacks, and legal/organizational issues of intrusion detection and incident response systems.
DATABASE MANAGEMENT SYSTEMS
COMPSCI 366
This course offers an introduction to the design and programming of databases and the implementation of database management systems from a computer science perspective. Contents include the relational model; SQL; database application development; and concepts and algorithms for building database management systems.
JAVASCRIPT AND DHTML
COMPSCI 381
JavaScript is a computer language globally used for adding flexibility and functionality to web pages. A powerful language in its own right, it supports event-driven, functional, and imperative programming styles. It also has the capability to make asynchronous calls to server-side scripts. Students in this course will gain a thorough understanding of JavaScript, and learn to harness its abilities to create custom user interfaces and manage windows, forms, events, etc.
SERVER-SIDE SCRIPTING
COMPSCI 382
This course will provide a thorough introduction to the concepts utilized in building modern web applications. Students will learn to create web applications that use SQL/NoSQL to access and update the information in a database.
EMBEDDED SYSTEMS
COMPSCI 412
An embedded system is a microprocessor/microcontroller-based system that is designed to perform a dedicated function with its sensors and peripherals. Many robotic, automobile, medical, industrial systems are just a few examples. This course is going to introduce the basic tools and knowledge to help you design simple embedded systems.
OPERATING SYSTEMS
COMPSCI 424
This course covers problems encountered by computer operating systems including resource management, memory management, virtual memory, concurrent programming, and distributed systems. Algorithms are presented for deadlock, memory paging, job scheduling, memory allocation, and performance measurement. Operating systems such as WINDOWS, DOS, UNIX, VMS, and MVS are discussed.
THEORY OF ALGORITHMS
COMPSCI 433
This course is a survey of algorithms needed for searching, sorting, pattern matching, analyzing graphs, and a variety of other problems of discrete mathematics. Analysis of algorithm efficiency and space/time tradeoffs are discussed.
THEORY OF COMPUTATION
COMPSCI 434
This course is an introduction to the theory of computation. It discusses finite automata and Turing machines as models of computation. It includes discussions of regular sets, recursive and partially recursive functions, context free grammars, the halting problem, undecidable problems, complexity, and Np-completeness.
TOPICS IN APPLIED COMPUTING
COMPSCI 451
This course covers emerging topics in modern applied computing. Sample topics include: new computing platforms, blockchain, machine learning, cloud computing, data mining and recommender systems, user modeling, and human-computer interaction. Repeatable with change in topic.
MALWARE ANALYSIS
COMPSCI 452
This course focuses on the working principles of malicious software, how to detect it, and how to defend against it. The detailed contents include static analysis, dynamic analysis, disassembly tools, malware code analysis and debugging, obfuscation and ransomware analysis, code injection and hooking, malware detection using memory forensics, and malware defense technique. This is a hands-on course with a large amount of practical analysis work using tools.
CRYPTOGRAPHY AND NETWORK SECURITY
COMPSCI 455
This course covers the fundamental cryptographic algorithms and security protocols for computer networks. Topics include security attacks and security services, classical ciphers, modern block and stream ciphers, public key cryptography, digital signatures, key management and distribution, authentication, and security network protocols. The class involves a significant amount of programming projects and assignments about cipher algorithms and security protocols.
COMPUTER SYSTEM SECURITY
COMPSCI 456
General concepts and applied methods of computer system security, especially as they relate to confidentiality, integrity, and availability of information assets. Topics include system security analysis, access control and various security models, information flow, protection against external and internal threats, malware, and reverse engineering. This is a hands-on course, where you will learn by working on programming assignments and projects.
COMPUTER NETWORKING
COMPSCI 460
This course introduces the principles, applications, protocols, and architectures of data networks. It places an equal emphasis on practical experience as well as theoretical foundations. There will be abundant network programming and lab activities around application layer, transportation layer, and routing.
SOFTWARE ENGINEERING
COMPSCI 476
This capstone course introduces concepts and techniques relevant to the production of large software systems. Topics include: modularity; specification; data abstraction; object modeling; design patterns; and testing. Students work in groups to complete a significant software development project using concepts taught in this course and in prior Computer Science courses.
ADVANCED WEB APPLICATION DEVELOPMENT
COMPSCI 482
This course will introduce students to popular technologies utilized in building modern Web applications. These include application frameworks, application design patterns, Web services, databases, and security.
INTERNSHIP IN COMPUTER SCIENCE
COMPSCI 493
S/NC grade basis only.
INDEPENDENT STUDY IN COMPUTER SCIENCE
COMPSCI 498
Study of a selected topic or topics under the direction of a faculty member. Repeatable. Department Consent required.
INDEPENDENT STUDY - UNDERGRADUATE RESEARCH
COMPSCI 498R
Study of a selected topic or topics under the direction of a faculty member. Repeatable. Department Consent required.