Notre Dame Computer Science and Engineering | Academics | Catalog
Remove checkmarks to filter the display
Course Level: 10000(100) 20000(200) 30000(300)
40000(400) 50000(500) 60000(600)
Credit Hours: 1 3 4
Course Number:3 Digit (old)5 Digit (new)
Quick Search:
  • Credits: 3
    Prerequisites: CSE 232 Advanced Programming

    The focus in this course is on the effective use of the computer in problem solving. The student will learn how to formulate data and procedural abstractions and deal with the complexities of large software systems. As a vehicle for handling this complexity the functional programming language Scheme will be used.

  • Credits: 3
    Prerequisites: CSE 232

    Introduction to mathematical techniques fundamental to Computer Engineering and Computer Science. Topics: mathematical logic, induction, set theory, relations, functions, recursion, recurrence relations, introduction to asymptotic analysis, algebraic structures, graphs, machine computation.

  • Credits: 4
    Prerequisites: EG 111/112

    This course is the first of a two-course sequence that introduces students to realm of computing and teaches them how to use computers effectively in problem solving. Student will learn how to formulate data and procedural abstractions, and apply basic problem solving strategies and techniques to problems from different domains. Students are automatically enrolled in the accompanying lab section, in which students will get practical hands-on experience with the material covered in the lecture.

  • Credits: 4
    Prerequisites: CSE 20210, CSE 20211, CSE 21211

    This is the second part of a two-course introduction-to-computing sequence, intended primarily for Computer Science and Computer Engineering majors. This course deepens and broadens student exposure to imperative and object-oriented programming and elementary data structure usage and design. Topics covered include modularity, specification, data abstraction, classes and objects, genericity, inheritance, and subtyping. An accompanying laboratory will provide comprehensive programming practice.

  • Credits: 4
    Prerequisites: EG 10112 or PHYS 10310

    Design of combinational and of sequential logic networks; overview of VLSI technology and computer architecture.

  • Credits: 3
    Prerequisites: Math 125 or equivalent; EG 120, or prior programming experience in a high-level language.

    Top-down analysis, structured programming, and a discussion of the Unix operating system. Basic analysis of algorithms, algorithm development, implementation and debugging and testing of programs. Students will write a series of programs in the C++ language to learn the concepts that are taught and to acquire experience in solving problems.

  • Credits: 3
    Prerequisites: CSE 20110, CSE 20232 and CSE 30331

    The theory of automata and formal language is developed along with applications. Various classes of automata, formal languages, and the relations between these classes are studied. Restricted models of computation: finite automata and pushdown automata; grammars and their relations to automata; parsing; Turing machines; limits of computation; undecidable problems, the classes of P and NP.

  • Credits: 3
    Prerequisites: CSE 331

    Effective techniques in managing, retrieving, and updating information from a database system. Focusing primarily on relational databases, the course presents the entity-relationship model, query processing, and normalization. Topics such as relational calculus and algebra, integrity constraints, distributed databases, and data security will also be discussed. The Final Project will consist of the design and implementation of a database system.

  • Credits: 3
    Prerequisites: Knowledge in operating systems and/or computer networks. Students may co-register with either CSE 341 or CSE 364.

    This course is designed for juniors and seniors in Computer Science and Engineering and will provide a programming-oriented introduction to advanced systems and networking topics. The course will address the basics of client-server computing, streaming media, peer-to-peer systems, remote procedure calls, and specific technologies such as CORBA, RPC, SOAP, Java RMI, web servers, and RTCP/RTSP. Projects will allow students to get hands-on experience and include the development of wide-area distributed systems and server applications. The course builds on topics covered in Operating Systems (CSE 341) and Computer Networks (CSE 364); students may co-register with either course. The course has a strong emphasis on programming and requires good knowledge of C, C++, or Java.

  • Credits: 3
    Prerequisites: The course includes significant programming projects; background in programming is necessary.

    This course introduces students to fundamental topics on the principles, design, implementation, and performance of computer networks. Topics covered include: Internet protocols, congestion control, switching and routing, mobile IP and ad-hoc networks, network security, the end-to-end arguments and peer-to-peer systems.

  • Credits: 4
    Prerequisites: CSE 221 and either CSE 212 or CSE 232

    An introduction to many of the architectural concepts present in current scalar machines, together with an introduction to assembly language programming and top-down design methodology. Also covers instruction sets; computer arithmetic; introduction to microprogramming; performance evaluation. Commercial computer-aided design software is used to deepen the student's understanding of the processes and tools used in designing modern computers.

  • Credits: 4
    Prerequisites: CSE 30321

    A continuation of the architectural concepts presented in CSE 30321, Computer Architecture I. Detailed study of processor design; hardwired and micro-programmed control; pipelining; memory organization; I/O and bus protocols; parallel processors. The course makes extensive use of commercial computer-aided design tools and culminates with a major project of designing and simulating and implementing a complete microprocessor.

  • Credits: 3
    Prerequisites: CSE 210, CSE 232

    Fundamental techniques in the design and analysis of non-numerical algorithms and their data structures. Elementary data structures such as lists, stacks, queues; more advanced ones such as deques, priority queues, and search trees. Design techniques such as divide-and-conquer. Sorting and searching algorithms. File compression, geometric methods, linear programming, random number generators, and string processing.

  • Credits: 3
    Prerequisites: CSE 20232 (232), CSE 30321 (321)

    Introduction to all aspects of modern operating systems. Topics include process management, process synchronization, memory management, storage management, protection and security. The course will also survey the design of modern operating systems.

  • Credits: 3
    Prerequisites: CSE/EE 40462 (462) and/or EE 446

    This is the capstone course for the "Bits to Chips" sequence in EE and CSE. The emphasis will be upon developing the ability to understand the topics in isolation, but also to be able to make trade-offs, even when detailed information is changing or incomplete. A concurrent lab component will focus on approaches to validating integrated microsystems: specifically, students will evaluate the chips designed and manufactured through VLSI Design (CSE/EE 462) and IC Fabrication (EE 446) courses and extrapolate on mapping these designs to future technologies

  • Credits: 3
    Prerequisites: CSE 331 and CSE 232

    Techniques for designing efficient computer algorithms and for analyzing computational costs of algorithms. Common design strategies such as dynamic programming, divide-and-conquer, and Greedy methods. Problem solving approaches such as sorting, searching, and selection. Lower bounds. Data Structures. Algorithms for graph problems, geometric problems, and other selected problems. Computationally intractable problems (NP-completeness). Parallel Algorithms.

  • Credits: 3
    Prerequisites: a. Courses: None b. Topics: Familiarity with a standard programming language such as Fortran, Pascal, c. Not open to CSE graduate students, who should enroll in CSE 531, instead.

    An introduction to modern computing concepts and computational models as embodied in a number of different classes of languages. These include (1) function-based languages such as Lisp, Scheme, SASL, ML; (2) logic-based languages such as rolog, Parlog, Strand, OPS; and (3) object oriented languages such as Smalltalk, C++.

  • Credits: 3
    Prerequisites: Linear Algebra and Matrix Theory; Familiarity with a high-level computer language

    Two and three-dimensional geometric algorithms and transformations; curve and surface representation; visible surface determination; illumination and shading; advanced modeling; animation; generation and sensing of light.

  • Credits: 3
    Prerequisites: Advanced standing in engineering or science. Some knowledge of SCHEME or LISP is helpful (see instructor).

    The philosophical base that makes up Artificial Intelligence today. Development of various representations commonly used. A study of knowledge bases including several applications and expert systems. A close look at genetic algorithms, a new area of Artificial Intelligence.

  • Credits: 3
    Prerequisites: None

    This course seeks to develop a solid foundation for reasoning about ethical, professional, and social controversies that arise in the computing field. Emphasis is placed on identifying the appropriate legal and professional context and applying sound critical-thinking skills in the analysis of a problem. Topics covered include relevant professional codes of ethics, encryption/privacy /surveillance issues, freedom of speech issues, "cracking" of computer systems, development of safety-critical software, whistle-blowing scenarios, and intellectual property issues. This course relies heavily on case study of real incidents, both historical and current.

  • Credits: 3
    Prerequisites: CSE 30331 (331)

    A comprehensive course about the methodologies required to control the complexity involved in the development of large software systems. Students are given the opportunity to practically apply software engineering techniques taught in this course through several medium-size programming problems and one large-scale development project. Emphasis is on the use of requirements and prototyping for design and software reliability, reuse and development management.

  • Credits: 3
    Prerequisites: EG 10111 (111) and 10112 (112) or MATH 30440

    Computer techniques for simulating the behavior of physical, biological, engineering and social systems, including both natural and artificial systems. Applications include scientific inquiry, engineering design, manufacturing planning, training, entertainment, and games. Topics include animation, visualization, and graphical analysis of results.

  • Credits: 3
    Prerequisites: CSE 30331 (331)

    An introduction to the fundamental techniques and tools used in compiler construction. Topics include: high level language specification via context free grammars, lexical analysis, parsing techniques such as top-down, bottom-up, and LR parsing, run-time environments, and code generation and optimization.

  • Credits: 3
    Prerequisites: CSE 341

    An introduction to the concepts and practices of computer system administration including software management, system device management, system security, management of system services, disaster planning and disaster recovery.

  • Credits: 3
    Prerequisites: Preferred: Operating Systems, IP networks

    An introduction to the concepts and practices of computer network management including network installation, monitoring, and troubleshooting.

  • Credits: 3
    Prerequisites: CSE 210, CSE 232, and CSE 331

    The theory of automata and formal language is developed along with applications. Various classes of automata, formal languages, and the relations between these classes are studied. Restricted models of computation: finite automata and pushdown automata; grammars and their relations to automata; parsing; Turing machines; limits of computation; undecidable problems, the classes of P and NP.

    Note: This class has been discontinued as of Spring 2004 and replaced by CSE 351 - Thoery of Computing.

  • Credits: 3
    Prerequisites: CSE 30322 (322)

    Intergrated hardware and software development, construction and test of embedded systems by design teams to meet specifications subject to technical, economic and environmental constraints.

  • Credits: 3
    Prerequisites: Fundamental probability theory

    This course is designed for seniors in Electrical Engineering. It presents broad coverage of existing and emerging data communication networks. Data networks are rapidly evolving and becoming an integral part of the global communications system. This course introduces the fundamental concepts of data networks in terms of the ISO layered architecture. The functions that occur at the various levels are explored. These topics include error control, flow control, and routing. Examples networks include local area networks such as Ethernet and Token Ring networks, proposals for wide and metropolitan area networks such as FDDI and DQDB, and the eventual integration of data communications into a single network under ISDN (Integrated Services Digital Network) and Broadband ISDN.

  • Credits: 3
    Prerequisites: CSE 221, EE 242. Senior standing required.

    CMOS devices and circuits, scaling and design rules, floor planning, data and control flow, synchronization and timing. Individual design projects.

  • Credits: 3
    Prerequisites: Some knowledge in operating systems programming is desired. C Programming skills are expected.

    Design of systems that require functional correctness and timeliness. Topics include real-time scheduling, communication, operating systems, Quality-of-Service, and real-time programming languages. Students will perform several programming and homework assignments and a semester project (in teams).

  • Credits: 3
    Prerequisites: Familiarity with a modern programming language is desirable, as well as basic knowledge of probability, linear algebra, and differential equations.

    This course studies the use of computer modeling and simulation of proteins (biophysics) and protein networks (systems biology). Three applications serve as examples to introduce computational methods: protein folding, docking of ligands to proteins (including protein-protein docking), and the study of protein-protein interaction networks. The emphasis is on methods that are truly useful to the study of biological molecules. There is no long baggage of methods of historical importance that are not applicable to biomolecules. From the engineering perspective, both mathematical and computational issues are considered. An introduction to the biological issues is also provided. The course is structured in modules and tutorials. Each module introduces a computational technique: students apply the method under study to a biologically relevant example, and then the theory of the method is presented. Tutorials go along with the modules and provide background on the computational and mathematical background needed to successfully complete each module. Finally, there are assignments and a final project and paper to put it all together. The final project will ideally include science students with a system relevant to their research and computational or engineering students who can contribute algorithms and software. Software especially developed for this course as well as existing tools will be used for the projects, modules, and tutorials. The course will introduce students to the scripting language Python. There will also be guest lectures by different experts in the field.

  • Credits: 3
    Prerequisites: CSE30331 for CSE students, CSE 20232 or equivalent for non-CSE students

    Broad overview of bioinformatics with a substantial problem-solving component. Topics include: generative models for sequences, pairwise sequence alignment, basic methods in molecular phylogeny and evolution, ab initio gene prediction, whole genome comparisons, genome assembly and analysis.

  • Credits: 3
    Prerequisites: Completion of CSE 211,212

    An introduction to the major biometric techniques (fingerprint, face, iris, …), the underlying pattern recognition concepts, and current concerns regarding privacy and social / ethical issues.

  • Credits: 3
    Prerequisites: One course in programming (or the equivalent) and one course (or the equivalent) in probability theory.

    Introduction and application of stochastic simulation theory and techniques to modeling Environmental Biocomplexity

  • Credits: 3
    Prerequisites: CSE 341-Operating Systems

    This course is a survey of topics in realm of computer security. This course will introduce the students to many contemporary topics in computer security ranging from PKI's (Public Key Infrastructures) to cyber-warfare to security ethics. Students will learn fundamental concepts of security that can be applied to many; traditional aspects of computer programming and computer systems design. The course will culminate in a research project where the student will have an opportunity to more fully investigate a topic related to the course.

  • Credits: 3
    Prerequisites:

    This course builds on the basic techniques introduced in Fundamentals of Computing I and II but emphasizes a team approach to the design and implementation of software. A variety of team structures will be considered including two person teams for extreme programming and three

    person teams as used in the ACM programming contest. Student teams will develop software to solve problems ranging across the computer science curriculum and will present their solutions to the class for critique and analysis. Students will participate in the fall campus programming contest and selected students will represent the University in the ACM regional programming contest.

  • Credits: 3
    Prerequisites: CSE 232

    Introduction to concepts, theories and techniques of Internet and WWW programming.

  • Credits: 3
    Prerequisites: Elementary Probability/Statistics; Programming experience in a language such as C/C++, Java, Matlab

    Data mining is the process of automatic discovery of (potentially) useful information, patterns, associations, and even anomalies. It is becoming a ubiquitous and pervasive concept in various sectors, including but not limited to medicine, biology, commerce, WWW, security, network intrusion and fraud detection, space research.

    Data mining uses methods from multiple fields including: machine learning, pattern recognition, databases, probability, statistics, information theory and visualization. The focus of this course will primarily be the machine learning component, with relevant inclusions and references from probability, statistics, pattern recognition, and information theory. The course will provide an introduction to the key principles, techniques (in data preparation and preprocessing, feature selection, classification, regression, clustering, combining multiple models, etc.), performance evaluation criteria, and applications. It will give you an opportunity to implement and experiment with some of the concepts, and apply them to the real world data sets. It will discuss some of the challenges encountered in data mining applications in the real world --- massive data sets, high class imbalance in data, unlabeled data, etc. It will also touch upon some of the advances in related fields such as web mining, intrusion detection, bioinformatics, distributed data mining. In addition, we will discuss the role of data mining in the society, drawing inferences from the popular media. Given the flood of data, there is a lot of information to mine and data mining is, indeed, becoming a very compelling field. Join the hunt for patterns in data.

  • Credits: 3
    Prerequisites: Permission Required

    This class seeks to introduce students to some basic concepts of computer-generated imagery as it is used in the field of visual effects, and to delve into some of the technical underpinnings of the field. While some focus will rely on artistic critique and evaluation, most of the emphasis of the class will be placed on understanding fundamental concepts of 3d modeling, texturing, lighting, rendering, and compositing. Those who excel in the visual effects industry are those who have both a strong aesthetic sense coupled with a solid understanding of what the software being used is doing ‘under the hood’. This class, therefore, will seek to stress both aspects of the industry.

    From a methodology standpoint, the class will consist of lectures, several projects that will be worked on both in-class and out of class, an on-site photo shoot, and extensive open discussion. The nature of the material combined with the fact that this is the first execution of the class will mean that a significant degree of flexibility will need to be incorporated into the class structure.

  • Credits: 3
    Prerequisites: CSE 346

    To develop strong techniques in database design; to learn advanced topics in database theory; to strengthen expertise in database implementation; to acquire knowledge of various methods of web-based database connections and interfaces; to become aware of latest trends in database research; to learn about newest developments in the industry; to provide students with the experience of designing an efficient self-contained database system.

  • Credits: 3
    Prerequisites: CSE 321, CSE 322

    Building on the architectural concepts developed in CSE 321/322, this course expands the understanding of all aspects of computer architecture. An in-depth study of several critical processor components is complemented with case studies that show how the concepts discussed in class are implemented under the constraints of a real product. In addition, the system components that interact with the microprocessor are discussed, including the operating system, the memory controller and the I/O subsystem. Throughout the course, homework assignments and projects will be used to further develop skills needed to carry out computer architecture research, including written and oral communication skills, the abstract analysis of architectural trends, measurement of real systems and architectural simulation.

  • Credits: 3
    Prerequisites: Digital logic design/Data structures/Basic knowledge in VLSI (or taking VLSI design in the same semester)

    This is a senior/entry graduate level course intended to expose students to the fundamentals of CAD tools for the design and analysis of digital systems. With the most advanced CAD tools it is possible to design Systems On a Chip (SOCs) featuring more than 100 million gates with device feature sizes of _ 0:18_m.

    However, these tools are not "push-button" tools. In order to obtain optimum results it is crucial for a designer

    to understand the underlying algorithms. The course aims at introducing to students the theory and implementation behind commercial CAD tools so that they will be able to contribute to the development of such tools as well as be productive users of such tools. The main topics include basic algorithms for CAD, digital system modeling, timing and power analysis, logic/architectural synthesis, physical level design, and system-level design.

  • Credits: 3
    Prerequisites: Knowledge of artificial intelligence methods.

    This course is designed to provide a forum for applying and testing artificial intelligence methods and models, especially behavior-based techniques, on a robot. While models will be evaluated with respect to their theoretical tenability (i.e., conceptual clarity, support by empirical data, plausibility), most emphasis will be given to issues of practicality (i.e., feasibility of implementation, real-time/real-world issues, computational resources, etc.). These practical considerations will be extensively studied in simulations as well as real-world implementations on a variety of robots. Implementations might also comprise new ideas hopefully giving rise to original research results

  • Credits: 3
    Prerequisites: CSE 221, CSE 321 and CSE 331

    This course provides a comprehensive and detailed treatment of digital systems testing and testable design. Fundamental concepts as well as the latest advances in this rapidly changing field are considered. Topics include fault modeling and simulation, combinational and sequential circuit test generation, memory and delay test, and design-for-testability methods such as scan and built-in self-test. Testing of embedded cores in systems-on-chip environment is also covered.

  • Credits: 3
    Prerequisites: None

    This course introduces students to topics on the principles, design, implementation, and performance of computer networks. Topics include: Internet protocols and routing, congestion control, switching and routing, mobile IP and ad-hoc networks, network security, the end-to-end arguments, peer-to-peer systems and other current research topics.

  • Credits: 3
    Prerequisites: CSE 330341

    Design and implementation of systems composed from many computers owned by distinct people spread over a wide area. Topics may include distributed file systems, operating systems, peer-to-peer systems, mobile computing, security, fault tolerance, and fundamental algorithms. Students will have the opportunity to use, modify, and evaluate several working distributed systems for scientific computing and mobile collaboration. A course project and a final paper are required.

  • Credits: 3
    Prerequisites: CSE 30264 (or equivalent)

    This course provides an introduction to the standards and protocols in wireless communications and discusses challenges and applications in mobile computing. Students will learn the basics of WiFi, Bluetooth, WiMax, Zigbee, software-defined radios, and other technologies and standards. The course will be project-oriented, i.e., students will tackle wireless and mobile computing challenges hands-on using devices and systems such as smartphones, sensor devices such as motes, wireless routers, laptops, and PDAs.

  • Credits: 3
    Prerequisites: None

    Design for manufacture looks at the process of designing a product for high volume manufacture. Topics covered include manufacturing variation and design robustness in the face of variation, design validation (assuring the design does what it is intended to do) and verification (assuring the design implementation matches the design and meets manufacturing constraints), testability, reliability.

  • Credits: 3
    Prerequisites: Senior standing in CS or CPEG

    A senior design experience incorporating scholarly research and development of systems, tools, and techniques to address a research question. Students will be presented with a problem domain and a research problem description, and will be required to perform problem analysis, identify a potential solution, place the solution in the context of existing work, implement a prototype of the solution, test and assess the prototype, document all steps and present their work.

  • Credits: 3
    Prerequisites:

    A research project at the undergraduate level under the supervision of a faculty member.