Academic Catalog

Computer Science and Engineering (CSE)

CSE 1010.  Introduction to Computing for Engineers.  (3 Credits)  
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.
May not be taken out of sequence after passing CSE 1729 or 2050.  
  
CSE 1729.  Introduction to Principles of Programming.  (3 Credits)  
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.
  
CSE 2050.  Data Structures and Object-Oriented Design.  (3 Credits)  
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.
CSE 1010 or 1729. Not open to students who have passed CSE 2100.  
  
CSE 2102.  Introduction to Software Engineering.  (3 Credits)  
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.
CSE 2050 or 2100, and 2500 which may be taken concurrently.  
  
CSE 2193.  International Study.  (1-6 Credits)  
Special Computer Science and Engineering topics taken in an international study program. May count toward the major with consent of the advisor and approved plan of study.
May be repeated for a total of 6 credits  
CSE 2301.  Principles and Practice of Digital Logic Design.  (4 Credits)  
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.
CSE 1010 and high school physics or PHYS 1010Q or 1201Q or 1401Q or 1501Q or 1601Q. Not open for credit to students who have passed CSE 2300W.  
  
CSE 2304.  Computer Architecture.  (3 Credits)  
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.
CSE 2050 or 2100, and 2500; open only to students in the School of Engineering and declared Computer Science minors. Not open for credit after passing CSE 3666.  
  
CSE 2500.  Introduction to Discrete Systems.  (3 Credits)  
Introduction to formal mathematical thinking including discrete systems and proofs. Discrete system topics include logic, set theory, basic number theory, basic combinatorics, functions, relations, sequences, sums, products, recurrence, and countability. Proof topics include direct proof, including proof by cases and induction, and indirect proof, including proof by contrapositive and contradiction.
CSE 1010 or 1729.  
  
CSE 2550.  Blockchain Technology I.  (3 Credits)  
Introduction to the basics of blockchain technology. The course will cover the semantics of blockchains, cryptocurrencies, types of blockchains and consensus algorithms, wallet operation, privacy, threat modeling and security aspects of blockchains and cryptocurrencies, the paradigm of decentralized internet, and some ethical and environmental concerns from a technical lens.
CSE 2050. Recommended preparation: CSE 3140.  
  
CSE 2600.  Introduction to Data Science and Engineering.  (3 Credits)  
Introduction to a broad selection of challenges and methodologies in working with big data. Topics to be covered include fundamental data science lifecycle topics such as data acquisition, management, integration, visualization, modeling, analysis, prediction, as well as data security, data privacy and ethics.
CSE 2050. Not open for credit to students who have passed CSE 4095 when offered as “Introduction to Data Science and Engineering.”  
  
CSE 3000.  Contemporary Issues in Computer Science and Engineering.  (1 Credit)  
Information management, the global and societal impact of computer science and engineering decisions, professional and ethical responsibility.
CSE 3140; open only to Computer Science and Engineering, Computer Science, and Data Science and Engineering majors.  
  
CSE 3100.  Systems Programming.  (3 Credits)  
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.
CSE 2050 or 2100; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 3140.  Cybersecurity Lab.  (2 Credits)  
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.
  
CSE 3150.  C++ Essentials.  (3 Credits)  
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.
CSE 3100; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 3160.  Functional Programming Fundamentals.  (3 Credits)  
The course covers fundamental techniques in functional programming. While the primary focus is purely functional programming, side effects are explored for various purposes such as modeling I/O and rendering stateful objects. The course introduces elementary types, control flow, environments and scoping, closures, and other structural features of typical functional programs. The course may cover additional topics such as typed functional programming languages, type inference, continuation-passing, streams, and monads.
  
CSE 3193.  International Study.  (1-6 Credits)  
Consent of the department head or undergraduate coordinator required, normally before the student's departure. May count toward the major with consent of the advisor and either the department head or undergraduate coordinator.
May be repeated for a total of 6 credits  
CSE 3200.  Mobile Application Development.  (3 Credits)  
Introduction to mobile application development. Its focus is on Android native development. Android Development is done using Java. The central objective is to develop students’ problem-solving skills for mobile app development. This course is typically only offered to Stamford Campus students.
CSE 2102 and 3100; open only to students in the School of Engineering and declared Computer Science minors; typically only offered to Stamford Campus students.  
  
CSE 3250.  Introduction to Cloud Computing.  (3 Credits)  
Introduction to the design and implementation of applications that take full advantage of the cloud-delivery model. Lectures will be a mix between topics, discussion, and in-class demonstrations. Weekly hands-on coding assignments will be given utilizing a modern cloud platform. Coding will be done using modern programming languages, such as Python, Javascript, and GOLang.
CSE 2050; open only to students in the College of Engineering or declared Computer Science minors. Recommended preparation: CSE 2102.  
  
CSE 3300.  Computer Networks and Data Communication.  (3 Credits)  
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.
CSE 3100; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 3302.  Digital Systems Design.  (3 Credits)  
(Also offered as ECE 3401.) Design and evaluation of control and data structures for digital systems. Hardware design languages are used to describe and design alternative register transfer level architectures and control units with a micro-programming emphasis. Consideration of computer architecture, memories, digital interfacing timing and synchronization, and microprocessor systems.
CSE 2300W or 2301; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 3350.  Digital Design Laboratory.  (3 Credits)  
(Also offered as ECE 4401.) Digital designing with PLA and FPGA, A/D and D/A conversion, floating point processing, ALU design, synchronous and asynchronous controllers, control path; bus master; bus slave; memory interface; I/O interface; logic circuits analysis, testing, and trouble shooting; PCB; design and manufacturing.
CSE 3302 or ECE 3401, which may be taken concurrently; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 3400.  Introduction to Computer and Network Security.  (3 Credits)  
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.
CSE 2500 and 3140; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 3500.  Algorithms and Complexity.  (3 Credits)  
Design and analysis of efficient computer algorithms. Algorithm design techniques, including divide-and-conquer, dynamic programming, and greedy approaches. Graph algorithms and advanced data structures. Worst-case and average-case analysis, reductions, and NP-completeness.
CSE 2050 or 2100; and 2500; open only to students in the School of Engineering, Cognitive Science majors, and declared Computer Science minors.  
  
CSE 3502.  Theory of Computation.  (3 Credits)  
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.
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.  
  
CSE 3504.  Probabilistic Performance Analysis of Computer Systems.  (3 Credits)  
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.
CSE 2050 or 2100; CSE 2500; STAT 3025Q or 3345Q or 3375Q, or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 3550.  Blockchain Technology.  (3 Credits)  
Introduction to the basics of blockchain technology from a technical/systems security lens. The course will cover the semantics of blockchains, popular examples of cryptocurrencies, types of blockchains and consensus algorithms, threat modeling of blockchain-based systems, formal security notions of consensus and ledgers, privacy and anonymity of payments and smart contracts, the paradigm of blockchain-based distributed services, and some ethical issues with respect to deployments in practice.
CSE 3400; open only to students in the College of Engineering or declared Computer Science minors. Recommended preparation: CSE 3140. Not open for credit to students who have passed CSE 2550.  
  
CSE 3666.  Introduction to Computer Architecture.  (3 Credits)  
Structure and operation of digital systems and computers. Instruction sets and assembly language. Integer and floating-point arithmetic. Machine organization, control and data paths, pipeline, and the memory hierarchy.
CSE 2050 or 2100, and CSE 2301 or 2500; open only to students in the School of Engineering and declared Computer Science minors. Not open for credit after passing CSE 2304. May not be taken out of sequence after passing 4302.  
  
CSE 3800.  Bioinformatics.  (3 Credits)  
(Also offered as BME 4800.) 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.
BIOL 1107; CSE 1729 or CSE 2050; STAT 3025Q or 3345Q or 3375Q or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors, others by instructor consent.  
  
CSE 3802.  Numerical Methods in Scientific Computation.  (3 Credits)  
(Also offered as ECE 3431.) 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.
CSE 1729 or 2050; MATH 2110Q and 2410Q; MATH 2210Q, 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.  
  
CSE 3810.  Computational Genomics.  (3 Credits)  
(Also offered as BME 3810.) 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.
BIOL 1107; CSE 1729 or CSE 2050; STAT 3025Q or 3345Q or 3375Q or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4095.  Special Topics in Computer Science and Engineering.  (1-6 Credits)  
Classroom course in special topics as announced in advance for each semester.
Prerequisites and recommended preparation vary. Open only to students in the School of Engineering and declared Computer Science minors.  
May be repeated for credit  
CSE 4099.  Independent Study in Computer Science and Engineering.  (1-4 Credits)  
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.
Consent of instructor and department head required; open only to students in the School of Engineering and declared Computer Science minors.  
May be repeated for credit  
CSE 4100.  Programming Language Translation.  (3 Credits)  
Introduction to the formal definition of programming language syntax and semantics. Design and realization of programming language processing systems such as assemblers, compilers, and interpreters.
CSE 3502; CSE 2304 or 3666; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4102.  Programming Languages.  (3 Credits)  
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.
CSE 3100; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4300.  Operating Systems.  (3 Credits)  
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.
CSE 3100; CSE 2304 or 3666; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4302.  Computer Organization and Architecture.  (3 Credits)  
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.
CSE 2304 or 3666; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4400.  Computer Security.  (3 Credits)  
Computer security and the design of secure systems. Cryptographic tools. Operating system security and access control. Network, software and database security. Randomness generation. Malicious software. Anonymity and privacy. Various attacks and countermeasures. Ethical, legal and business aspects.
CSE 3100; CSE 2304 or 3666; and CSE 3400, which may be taken concurrently; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4402.  Network Security.  (3 Credits)  
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.
CSE 3300 and 3400, both of which may be taken concurrently; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4412.  Introduction to Quantum Computing, Cryptography, and Networking.  (3 Credits)  
Fundamentals of quantum computing (qubits, superposition, measurements, quantum circuits) including basic quantum algorithms and quantum complexity. Quantum cryptography and networking, including quantum key distribution protocols and their security proofs, and the design and use of large-scale quantum networks (e.g., quantum repeaters). Hands-on programming of the IBM quantum computer.
  
CSE 4502.  Big Data Analytics.  (3 Credits)  
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.
CSE 3500; MATH 2210Q; open only to students in the School of Engineering and declared Computer Science and Analytics minors.  
  
CSE 4701.  Principles of Databases.  (3 Credits)  
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.
CSE 3500; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4702.  Introduction to Modern Cryptography.  (3 Credits)  
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.
CSE 3400 and 3500; and STAT 3025Q or 3345Q or 3375Q or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4703.  Principles of Computer Graphics.  (3 Credits)  
Representation of two- and three-dimensional data, internal representation of data structures, transformations, mapping of data to graphics screen, graphics hardware. Programming projects are assigned.
CSE 3500; MATH 2110Q; MATH 2210Q or 3210; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4704.  Computational Geometry.  (3 Credits)  
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.
CSE 3500; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4705.  Artificial Intelligence.  (3 Credits)  
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.
CSE 3500; open only to students in the School of Engineering, Cognitive Science majors, and declared Computer Science and Cognitive Science minors.  
  
CSE 4709.  Networked Embedded Systems.  (3 Credits)  
Introduction to the basic concepts, challenges, and methods for designing networked embedded systems. Examines related hardware, software, and system-level design. Hardware topics include various design alternatives (such as microcontrollers, digital signal processors (DSP), and field-programmable gate array (FPGA)) in resource-constrained environments. Software issues include operating systems, programming languages, program verification and analysis. System-level topics include autonomous wireless sensor network design, power and resource management, security and privacy.
CSE 2304 or 3666; CSE 3300, or equivalent with instructor permission; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4820.  Introduction to Machine Learning.  (3 Credits)  
An introduction to the basic tools and techniques of machine learning, including models for both supervised and unsupervised learning, related optimization techniques, and methods for model validation. Topics include linear and logistic regression, SVM classification and regression, kernels, regularization, clustering, and on-line algorithms for regret minimization.
MATH 2210Q; STAT 3025Q or 3345Q or 3375Q or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors; juniors or higher. Recommended preparation: CSE 3500.  
  
CSE 4830.  Computer Vision and Machine Learning for Image Analysis.  (3 Credits)  
Computer vision, image processing, machine learning and deep learning techniques and their application to digital photography and medical image analysis. Students will gain theoretical and practical skills in 2D and 3D image classification, segmentation, reconstruction and registration using computer vision and machine learning.
MATH 2210Q; STAT 3025Q or 3345Q or 3375Q or MATH 3160; open only to students in the School of Engineering and declared Computer Science minors; juniors or higher. Recommended preparation: CSE 3500 and 4820.  
  
CSE 4900.  Independent Design Laboratory.  (3 Credits)  
Experimental design project undertaken by the student by special arrangement with a faculty member of the Department of Computer Science and Engineering.
CSE 2102; open only to students in the School of Engineering and declared Computer Science minors.  
May be repeated for credit  
CSE 4904.  Computer Science Design Laboratory.  (3 Credits)  
Design and implementation of complex software and/or hardware systems to solve problems posed by either student groups or the instructor.
Prerequisites and recommended preparation vary. Open only to students in the School of Engineering and declared Computer Science minors.  
May be repeated for credit  
CSE 4905.  Networking and Distributed Systems Laboratory.  (3 Credits)  
Software laboratory that explores selected issues in networking and distributed systems. Topics include: Berkeley sockets; TCP and IP; atm apis; latency and bandwidth; performance models; performance evaluation of different network fabrics; MPI; simple CORBA; performance characteristics of MPI, Java, RMI, and CORBA; implementation and evaluation of a client-server system.
CSE 3300; CSE 2304 or 3666; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4939W.  Computer Science and Engineering Design Project I.  (3 Credits)  
The first semester of the required two-semester major design experience. Teams of students propose, design, produce, and evaluate a software and/or hardware system. Culminates in the delivery of the design, analysis, and initial working system, to be used as a basis for CSE 4940, formal public presentation, and written documentation. Oral and written progress reports are required.
CSE 3500; ENGL 1007 or 1010 or 1011; open to students with a minimum of 70 earned credits, with a minimum of 24 earned CSE credits; open to Computer Science and Engineering, Computer Science, Data Science and Engineering, and Robotics Engineering majors.  
  
Skill Codes: COMP: Writing Competency  
CSE 4940.  Computer Science and Engineering Design Project II.  (3 Credits)  
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.
CSE 4939W; open only to Computer Science and Engineering, Computer Science, Data Science and Engineering, and Robotics Engineering majors.  
  
CSE 4950.  Electrical and Computer Engineering Design I.  (2 Credits)  
(Also offered as ECE 4901.) 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.
ECE 3101; ECE 3201; open only to seniors in the School of Engineering and declared Computer Science minors.  
  
CSE 4951.  Electrical and Computer Engineering Design II.  (3 Credits)  
(Also offered as ECE 4902.) 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.
ECE 4901; open only to students in the School of Engineering and declared Computer Science minors.  
  
CSE 4997.  Senior Thesis in Computer Science and Engineering.  (3 Credits)  
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.
Senior standing in Computer Science, Computer Science and Engineering, or Computer Engineering.