Undergraduate Course Directory

Course Search

To filter and search by keywords in course titles, see the Course Search.

Courses by Subject Area

Click on the links below for a list of courses in that subject area. You may then click “View Classes” to see scheduled classes for individual courses. See the Ratcliffe Hicks Courses page for a list of those courses.

1010. Introduction to Computing for Engineers

3.00 credits

Prerequisites: Not open for credit to students who have passed CSE 1100 or 1729.

Grading Basis: Graded

Introduction to computing logic, algorithmic thinking, computing processes, a programming language and computing environment. Knowledge obtained in this course enables use of the computer as an instrument to solve computing problems. Representative problems from science, mathematics, and engineering will be solved.

View Classes »

1729. Introduction to Principles of Programming

3.00 credits

Prerequisites: CSE 1010

Grading Basis: Graded

Introduction to computer programming in a structured programming language including fundamental elements of program design and analysis. Data and functional abstraction as tools for constructing correct, efficient, and intelligible programs for a variety of common computing problems.

View Classes »

2050. Data Structures and Object-Oriented Design

3.00 credits

Prerequisites: CSE 1729. Not open to students who have passed CSE 2100.

Grading Basis: Graded

Introduction to fundamental data structures and algorithms. The emphasis is on understanding how to efficiently implement different data structures, communicate clearly about design decisions, and understand the relationships among implementations, design decisions, and the four pillars of object-oriented programming: abstraction, encapsulation, inheritance, and polymorphism.

View Classes »

2102. Introduction to Software Engineering

3.00 credits

Prerequisites: CSE 2050 or 2100, and 2500 which may be taken concurrently.

Grading Basis: Graded

Software engineering concepts including the software life cycle and other software-development process models. Specification techniques, design methodologies, performance analysis, and verification techniques. Team-oriented software design and development, and project management techniques.Use of appropriate design and debugging tools for a modern programming language. Homework and laboratory projects that emphasize design and the use/features of a modern programming language.

View Classes »

2300W. Digital Logic Design

4.00 credits

Prerequisites: CSE 1010 or 1100 or 1102 and secondary school physics or PHYS 1010 or 1501; ENGL 1010 or 1011 or 2011. Not open to students who have passed CSE 207 or 208.

Grading Basis: Graded

Representation of digital information. Analysis, design, and evaluation of combinational and sequential logic circuits. Debugging techniques. Use of computer facilities for circuit simulation, CAD, and report preparation and presentation. Introduction to structure and operation of digital computers. Design projects. Written reports with revisions are required for each project.

View Classes »

2304. Computer Architecture

3.00 credits

Prerequisites: CSE 2050 or 2100, and 2500. This course and CSE 3666 may not be both taken for credit.

Grading Basis: Graded

Structure and operation of digital systems and computers. Fundamentals of digital logic. Machine organization, control and data paths, instruction sets, and addressing modes. Hardwired and microprogrammed control. Memory systems organization. Discussion of alternative architectures such as RISC, CICS, and various parallel architectures.

View Classes »

2500. Introduction to Discrete Systems

3.00 credits

Prerequisites: CSE 1102 or 1729

Grading Basis: Graded

Mathematical methods for characterizing and analyzing discrete systems. Modern algebraic concepts, logic theory, set theory, grammars and formal languages, and graph theory. Application to the analysis of computer systems and computational structures.

View Classes »

3000. Contemporary Issues in Computer Science and Engineering

1.00 credits

Prerequisites: CSE 3100 and either CSE 2304 or 3666. Open only to CSE and Computer Science majors.

Grading Basis: Graded

The global and societal impact of computer science and engineering decisions, professional and ethical responsibility.

View Classes »

3100. Systems Programming

3.00 credits

Prerequisites: CSE 2050 or 2100; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Introduction to system-level programming with an emphasis on C programming, process management and small scale concurrency with multi-threaded programming. Special attention will be devoted to proficiency with memory management and debugging facilities both in a sequential and parallel setting.

View Classes »

3140. Cybersecurity Lab

2.00 credits

Prerequisites: CSE 2500; CSE 3100, which may be taken concurrently.

Grading Basis: Graded

Introduction to the design of secure systems. Explores issues that arise in multiple design phases to understand the limitations of the platform and the source of opportunities for attackers. Each unit will explore a system, its design, its vulnerabilities and how to exploit them, culminating with the creation, implementation and deployment of counter-measures to eliminate the vulnerabilities and nullify the threat.

View Classes »

3150. C++ Essentials

3.00 credits

Prerequisites: CSE 3100, which may be taken concurrently; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Leverages existing knowledge of C and covers all the essential capabilities of the most recent C++ standard, illustrating their specificities as well as how the language can be used to model object-oriented implementation of a number of classic problems.

View Classes »

3300. Computer Networks and Data Communication

3.00 credits

Prerequisites: CSE 2304 or 3666; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Introduction to computer networks and data communications. Network types, components and topology, protocol architecture, routing algorithms, and performance. Case studies including LAN and other architectures.

View Classes »

3400. Introduction to Computer and Network Security

3.00 credits

Prerequisites: CSE 2500 and 3100; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Introduction to computer security and the design of secure computer systems. Introduction to applied cryptography, including basic elements of symmetric-key and public-key ciphers, authentication, and key exchange. Security issues in operating systems, software, databases, and networks. Attacks and countermeasures. Ethical, legal and business aspects.

View Classes »

3500. Algorithms and Complexity

3.00 credits

Prerequisites: CSE 2050 or 2100; and 2500; open only to students in the School of Engineering, Cognitive Science majors, and declared Computer Science minors.

Grading Basis: Graded

Design and analysis of efficient computer algorihms. Algorithm design techniques, including divide-and-conquer, depth-first search, and greedy approaches. Worst-case and average-case analysis. Models of computation. NP-complete problems.

View Classes »

3502. Theory of Computation

3.00 credits

Prerequisites: CSE 2050 or 2100; and 2500; open only to students in the School of Engineering, Cognitive Science majors, and declared Computer Science or Cognitive Science minors.

Grading Basis: Graded

Formal models of computation, such as finite state automata, pushdown automata, and Turing machines, and their corresponding elements in formal languages (regular, context-free, recursively enumerable). The complexity hierarchy. Church's thesis and undecidability. NP completeness. Theoretical basis of design and compiler construction.

View Classes »

3504. Probabilistic Performance Analysis of Computer Systems

3.00 credits

Prerequisites: CSE 2050 or 2100; CSE 2500; STAT 3025, or 3345, or 3375, or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Introduction to the probabilistic techniques which can be used to represent random processes in computer systems. Markov processes, generating functions and their application to performance analysis. Models which can be used to describe the probabilistic performance of digital systems.

View Classes »

3666. Introduction to Computer Architecture

3.00 credits

Prerequisites: CSE 2050 or 2100; open only to students in the School of Engineering and declared Computer Science minors. Not open after passing CSE 4302 or 4901. CSE 3666 and CSE 2304 may not both be taken for credit.

Grading Basis: Graded

Structure and operation of digital systems and computers. Machine organization, control and data paths, instruction sets, and addressing modes. Integer and floating-point arithmetic, the memory hierarchy, the I/O subsystem. Assembly language and basic program organization, interrupts, I/O, and memory allocation.

View Classes »

3800. Bioinformatics

Also offered as: BME 4800

3.00 credits

Prerequisites: BIOL 1107; CSE 1010 or 1100 or 1729; STAT 3025 or 3345; open only to Biomedical Engineering majors, Computer Science, and Computer Science and Engineering majors, others by instructor consent.

Grading Basis: Graded

Fundamental mathematical models and computational techniques in bioinformatics. Exact and approximate string matching, suffix trees, pairwise and multiple sequence alignment, Markov chains and hidden Markov models. Applications to sequence analysis, gene finding, database search, phylogenetic tree reconstruction.

View Classes »

3802. Numerical Methods in Scientific Computation

Also offered as: ECE 3431

3.00 credits

Prerequisites: CSE 1010 or 1100 or 1729; MATH 2110 and 2410; MATH 2210, which may be taken concurrently; open only to students in the School of Engineering, Cognitive Science majors, and declared Computer Science and Cognitive Science minors.

Grading Basis: Graded

Introduction to the numerical algorithms fundamental to scientific computation. Equation solving, function approximation, integration, difference and differential equations, special computer techniques. Emphasis is placed on efficient use of computers to optimize speed and accuracy in numerical computations. Extensive digital computer usage for algorithm verification.

View Classes »

3810. Computational Genomics

Also offered as: BME 3810

3.00 credits

Prerequisites: BIOL 1107; CSE 1010 or 1100 or 1729; STAT 3025 or 3345; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Computational methods for genomic data analysis. Topics covered include statistical modeling of biological sequences, probabilistic models of DNA and protein evolution, expectation maximization and Gibbs sampling algorithms, genomic sequence variation, and applications in genomics and genetic epidemiology.

View Classes »

4095. Special Topics in Computer Science and Engineering

3.00 credits | May be repeated for credit.

Prerequisites: Prerequisites and recommended preparation vary. Open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Classroom course in special topics as announced in advance for each semester. With a change of content, this course may be repeated for credit.

View Classes »

4099. Independent Study in Computer Science and Engineering

1.00 - 4.00 credits | May be repeated for credit.

Prerequisites: Consent of instructor and department head required; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Exposes the student to management principles and practices and the knowledge and skills necessary to develop an education project and to perform a research project.

View Classes »

4102. Programming Languages

3.00 credits

Prerequisites: CSE 3502; open only to students in the School of Engineering and declared Computer Science minors

Grading Basis: Graded

The study of programming language features and programming paradigms. Data types, control, run-time environments, and semantics. Examples of procedural, functional, logical, and object-oriented programming. Features used for parallel and distributed processing. Classic and current programming languages and environments.

View Classes »

4300. Operating Systems

3.00 credits

Prerequisites: CSE 3100; CSE 2304 or 3666; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Introduction to the theory, design, and implementation of software systems to support the management of computing resources. Topics include the synchronization of concurrent processes, memory management, processor management, scheduling, device management, file systems, and protection.

View Classes »

4302. Computer Organization and Architecture

3.00 credits

Prerequisites: CSE 2300; CSE 2304 or 3666; open only to students in the School of Engineering and declared Computer Science minors. Cannot be taken after passing CSE 4901.

Grading Basis: Graded

Organization and architecture of modern computer systems. Emphasis is on alternatives and advances to the basic Von Neumann architecture: topics such as pipelining, memory hierarchy and management, multiprocessor and alternative architectures, reconfigurable hardware, and other techniques for performance enhancement.

View Classes »

4402. Network Security

3.00 credits

Prerequisites: CSE 3300 and 3400; open only to students in the School of Engineering and declared Computer Science minors

Grading Basis: Graded

The principle and practices of how to provide secure communication between computer systems. Includes protection techniques at the physical, network, transport layers, and major approaches in Internet security. This class will cover how cryptography is applied in network security. Topics include: denial-of-service, DNS, BGP, IPSec, SSL/TLS, Authentication/Kerberos, VPNs, PKI, firewalls, intrusion detection/prevention systems, blockchains, and wireless security.

View Classes »

4502. Big Data Analytics

3.00 credits

Prerequisites: CSE 3500; MATH 2210; open only to students in the School of Engineering and declared Computer Science and Analytics minors

Grading Basis: Graded

Focuses on basic concepts of data science and big data analytics. Different algorithmic techniques employed to process data will be discussed. Specific topics include: Parallel and out-of-core algorithms and data structures, rules mining, clustering algorithms, text mining, string algorithms, data reduction techniques, and learning algorithms. Applications such as motif search, k-locus association, k-mer counting, error correction, sequence assembly, genotype-phenotype correlations, etc. will be investigated.

View Classes »

4701. Principles of Databases

3.00 credits

Prerequisites: CSE 3500; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Fundamentals of data base design and data indexing techniques. Hierarchical, network, and relational data models. Data base design theory. Query languages, their implementation and optimization. Data base security and concurrent data base operations.

View Classes »

4702. Introduction to Modern Cryptography

3.00 credits

Prerequisites: CSE 3400 and 3500; STAT 3375Q or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Covers the foundations of modern cryptography introducing basic topics such as one-way functions, pseudorandom generators, and computational hardness assumptions based on number theory. The course will cover fundamental cryptographic constructions such as hard-core predicates, secure symmetric encryption and message-authentication codes, and public-key cryptography.

View Classes »

4704. Computational Geometry

3.00 credits

Prerequisites: CSE 3500; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

An extension of sorting, searching, selection, and graph algorithms to geometric problems. This includes algorithms and data structures for constructing geometric objects, computing geometric properties, and answering geometric queries as well as techniques for the analysis of their correctness and complexity.

View Classes »

4705. Artificial Intelligence

3.00 credits

Prerequisites: CSE 3500; open only to students in the School of Engineering, Cognitive Science majors, and declared Computer Science and Cognitive Science minors.

Grading Basis: Graded

Design and implementation of intelligent systems, in areas such as natural language processing, expert reasoning, planning, robotics, problem solving and learning. Students will design their own versions of "classic" AI problems, and complete one substantial design project.

View Classes »

4939W. Computer Science and Engineering Design Project I

3.00 credits

Prerequisites: CSE 4100 or CSE 4102 or CSE 4300, which may be taken concurrently; ENGL 1010 or 1011 or 2011. Open only to students in the School of Engineering.

Grading Basis: Graded

first semester of the required two-semester major design experience. Working on a team, students will propose, design, produce, and evaluate a software and/or hardware system. This course will culminate in the delivery of the design, analysis, and initial working system to be used as a basis for CSE 4940, a formal public presentation, and written documentation. Oral and written progress reports are required.

View Classes »

4940. Computer Science and Engineering Design Project II

3.00 credits

Prerequisites: CSE 4939W. Open only to CSE and Computer Science majors.

Grading Basis: Graded

The second semester of the required year long major design experience. The semester will be spent developing, testing, and evaluating the software and/or hardware system begun in CSE4939W. The project will culminate in the delivery of a working system and will include a formal public presentation, and written documentation. Oral and written progress reports are required.

View Classes »

4950. Electrical and Computer Engineering Design I

Also offered as: ECE 4901

2.00 credits

Prerequisites: ECE 3201; C+ or better in ECE 2001; C+ or better in ECE 3101; open only to seniors in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Discussion of the design process; project statement, specification, project planning, scheduling and division of responsibility, ethics in engineering design, safety, environmental considerations, economic constraints, liability, manufacturing, and marketing. Projects are carried out using a team-based approach. Selection and analysis of a design project to be undertaken in CSE 4951/ECE 4902 is carried out. Written progress reports, a proposal, an interim project report, a final report, and oral presentations are required.

View Classes »

4951. Electrical and Computer Engineering Design II

Also offered as: ECE 4902

3.00 credits

Prerequisites: ECE 4901; open only to students in the School of Engineering and declared Computer Science minors.

Grading Basis: Graded

Design of a device, circuit, system, process, or algorithm. Team solution to an engineering design problem as formulated in CSE 4950/ECE 4901, from first concepts through evaluation and documentation. Written progress reports, a final report, and oral presentations are required.

View Classes »

4997. Senior Thesis in Computer Science and Engineering

3.00 credits

Prerequisites: Senior standing in Computer Science, Computer Science and Engineering, or Computer Engineering

Grading Basis: Graded

Students are expected to choose an advisor and seek approval of a thesis topic by the time of registration. Students will author a formal thesis based on independent research conducted under the advisor supervision. Thesis proposal and final thesis must follow the guidelines developed by the department.

View Classes »