Year 1 - Freshman
CMPS 5J - Introduction to Programming in Java
Introduces programming in Java for students who have no prior programming experience. Students learn programming and documentation skills, as well as algorithmic problem-solving, and programming methodologies. Introduces computers, compilers, and editors. Students write small to medium-sized programs.
CMPS 11 - Intermediate ProgrammingContinuation of course 5J. Covers basic object-oriented programming, event-driven programming, graphical user interface (GUI) creation, recursion, two-dimensional arrays.
Year 2 - Sophmore
CMPE 12 - Computer Systems and Assembly Language
Introduction to computer systems and assembly language and how computers compute in hardware and software. Topics include digital logic, number systems, data structures, compiling/assembly process, basics of system software, and computer architecture.
CMPE 16 - Applied Discrete MathematicIntroduction to applications of discrete mathematical systems. Topics include sets, functions, relations, graphs, predicate calculus, mathematical proof methods (induction, contraposition, contradiction), counting methods (permutations, combinations), and recurrences.
CMPE 107 - Probability and Statistics for EngineersIntroduction to fundamental tools of stochastic analysis. Probability, conditional probability; Bayes Theorem; random variables and transforms; independence; Bernnoulli trials. Statistics, inference from limited data; outcomes of repeated experiments; applications to design; assessment of relative frequency and probability; law of large numbers; precision of measurements. Elements of stochastic processes, Poisson processes; Markov chains.
CMPS 12B - Introduction to Data StructuresTeaches students to implement common data structures and the algorithms associated with each data structure, through progressively difficult exercises. Topics include big "O" notation; pointers, recursion (induction), and dynamic allocation; linked lists and list processing; stacks, queues, binary trees and binary search trees; simple sorting techniques and simple search techniques. Students will gain a working knowledge of the elements of the Java and C programming languages
CMPS 12M - Data Structures LaboratoryComplements course 12B, gaining additional competence with a number of important software development tools, languages, and techniques. Included are advanced Unix features and utilities such as grep, find, diff, the shell, and pipes; C programs utilizing I/O, arrays, pointers, and structures; a scripting language to perform simple text and file manipulation; and the make utility.
CMPS 101 - Algorithms and Abstract Data TypesStudies basic algorithms and their relationships to common abstract data types. Covers the notions of abstract data types and the distinction between an abstract data type and an implementation of that data type. The complexity analysis of common algorithms using asymptotic (big "O") notation is emphasized. Topics include sorting and searching techniques, basic graph algorithms, and algorithm design techniques. Abstract data types covered include priority queues, dictionaries, disjoint sets, heaps, balanced trees, and hashing.
Year 3 - Junior
CSE 20 - Beginning Programming in Python
The course provides students with Python programming skills and ability to design programs and read Python code. Topics include data types, control flow, methods and advanced functions, built-in data structures, and introduction to OOP.
CSE 80N - Introduction to Networking and the InternetIntroduction to the evolution, technological basis, and services of the Internet, with descriptions of its underlying communications structure, routing algorithms, peer-to-peer hierarchy, reliability, and packet switching. Network security, mail, multimedia and data compression issues, HTML, and digital images.
CSE 103 - Computational ModelsVarious representations for regular languages, context-free grammars, normal forms, simple parsing, pumping lemmas, Turing machines, the Church-Turing thesis, intractable problems, the P-NP question.
CSE 112 - Comparative Programming LanguageCovers several programming languages and compares styles, philosophy, and design principles. Principles underlying declarative, functional, and object-oriented programming styles are studied. Students write programs emphasizing each of these techniques.
CSE 118 - Mobile ApplicationsIntroduces programming and application development for mobile devices. Covers the SDK and main programming platforms available on mobile devices, methodologies for developing native applications, division of computation between the mobile platform and servers, and mobile-to-server communications. Introduces platforms based on JavaScript and HTML5 for the development of applications that are portable across platforms. Students develop components of applications, leading to fully functional applications by the end of the course.
CSE 120 - Computer ArchitectureIntroduction to computer architecture including examples of current approaches and the effect of technology and software. Computer performance evaluation, basic combinatorial and sequential digital components, different instruction set architectures with a focus on the MIPS ISA and RISC paradigm. Evolution of CPU microarchitecture from single-cycle to multi-cycle pipelines, with overview of super-scalar, multiple-issue and VLIW. Memory system, cache, virtual memory and relationship between memory and performance. Evolution of PC system architecture. May include advanced topics, such as parallel processing, MIMD, and SIMD.
CSE 146 - Ethics & AlgorithmsThis course provides an introduction to data-driven and algorithmic decision making, and ethical frameworks for evaluating automated systems. There will be an emphasis on algorithmic literacy, critical analysis, and fundamental limitations of automated decision making. We will cover concepts including predictive and causal modeling. We will discuss bias, fairness, interpretability, privacy, and accountability. Finally we will discuss notions of autonomy and algorithmic auditing.
Year 4 - Senior
CSE 3 - Personal Computer Concepts: Software and Hardware
Provides an introduction to computers. Personal computing is emphasized, and students are introduced to word processing, spreadsheets, database management, graphics, and programming. Covers fundamentals of computing and current and future uses of computer technology, PC hardware, Windows operating system, applications software, networking and the Internet, and developments in the computer industry. Designed for students with little or no experience using computers.
CSE 102 - Introduction to Analysis of AlgorithmsMethods for the systematic construction and mathematical analysis of algorithms. Order notation, the RAM model of computation, lower bounds, and recurrence relations are covered. The algorithm design techniques include divide-and-conquer, branch and bound, and dynamic programming. Applications to combinatorial, graph, string, and geometric algorithms.
CSE 130: Principles of Computer Systems DesignCovers the principles governing computer-systems design and complexity; familiarity with memory, storage, and networking; concurrency and synchronization; layering (abstraction and modularity); naming; client-server and virtualized system models; and performance. Requires significant programming projects demonstrating mastery of these concepts.
CSE 140 - Artificial IntelligenceIntroduction to the contemporary concepts and techniques of artificial intelligence, including any or all of: machine perception and inference, machine learning, optimization problems, computational methods and models of search, game playing and theorem proving. Emphasis may be on any formal method of perceiving, learning, reasoning, and problem solving which proves to be effective. This includes both symbolic and neural network approaches to artificial intelligence. Issues discussed include symbolic versus nonsymbolic methods, local versus global methods, hierarchical organization and control, and brain modeling versus engineering approaches. Lisp or Prolog may be introduced. Involves one major project or regular programming assignments.
CSE 180 - Database Systems IIntroduction to the concepts, approaches, tools, and methodology of database design. Covers the entity-relationship model, the relational model, relational algebra, relational calculus, commercial languages (such as SQL and QBE), functional dependencies, normal forms, and design theory. Other topics may include knowledge-bases, constraint databases, and alternative database models.
CSE 183 - Web ApplicationsThe World-Wde Web is one of the main mechanisms by which computer applications are delivered to users. This course introduces the design of Web applications. Students learn the main technologies involved, and build web applications as part of homework assignments and group class projects.
CMPS = Computer Science
CMPE = Computer Engineering
CSE = Computer Science and Engineering