## Undergraduate Programs

### Courses

#### Engineering

- ENGR-E 101 Innovation and Design (3 cr.) Innovation and Design provides an introduction to Intelligent Systems Engineering. Students learn about engineering and the focus areas through interactive lectures and hands-on activity quests. Students present each quest with a new media to practice presenting data. Students will learn about professional development and start a digital portfolio.

- ENGR-E 110 Engineering Computing Architectures (3 cr.) This course introduces the architecture of computing systems from logic gates through arithmetic logic units, central processing unit, and memory. It proceeds through the integration into a simple, but complete computing device including the necessary software elements.

- ENGR-E 111 Software Systems Engineering (4 cr.) This course covers core aspects of the practice of software engineering, from basic programming concepts to design to development, debugging and maintenance. This course will cover software design, considering abstraction, modularity and encapsulation. It will cover requirements and process management, testing and maintenance, common software structures and software development tools. Credit given for only one of ENGR-E 111, CSCI-C 212, H 212 or A 592.

- ENGR-E 201 Computer Systems Engineering (3 cr.) P: ENGR-E 111. This course covers modern computing devices, the computing ecosysytem and introductory material in systems programming, computer architecture, operating systems and computer networks. Coursework includes fundamental concepts at the basis of modern computing systems, covering costs in time, space and energy. The curriculum includes basic operational concepts in programming, computer architecture and networking.

- ENGR-E 210 Engineering Cyber-Physical Systems (3 cr.) P: ENGR-E 201 or CSCI-C 335. This course provides an introduction to core topics in cyber-physical systems. These topics include embedded systems, issues of real-time processing, and sensor mechanisms and control algorithms. Students will study applications of these elements in the Internet of Things and Robotics.

- ENGR-E 221 Intelligent Systems I (3 cr.) P: One of the following: ENGR-E 111, CSCI-C 200, C 212, C 291 or INFO-I 210. This course introduces important concepts about intelligent systems. It provides a basis in mathematical tools and algorithms used in AI and machine learning. It introduces optimization techniques used in Intelligent Systems II. It will describe many current examples and how they are implemented in cloud systems. The course is based on Python for data analytics.

- ENGR-E 222 Intelligent Systems II (3 cr.) In this course students will be familiarized with different specific applications and implementations of intelligent systems and their use in desktop and cloud solutions.

- ENGR-E 250 Systems, Signals, and Control (3 cr.) P: MATH-M 343. Many engineering systems are based on signal processing and this course covers fundamental concepts in signals, systems, and control theory. Basic topics are covered, including continuous and discrete time signals and systems, filtering and sampling, Fourier transforms and its variants, and basic feedback systems.

- ENGR-E 299 Engineering Professionalization & Ethics (1 cr.) This course introduces topics in engineering related to professionalism and ethics designed to develop ethical reasoning skills, increase ethical awareness and professionalism, and to analyze ethical dilemmas, specific to engineering. Students will learn ethical principles that can be applied in research, design and development. An eight-week course.

- ENGR-E 311 Circuits and Digital Systems (3 cr.) P: ENGR-E 110 and PHYS-P 222. This course will cover elements of circuits, such as the operation of basic circuit elements, fundamental circuit laws, and analytic techniques in both the time domain and the frequency domain. It will also cover the transistor-level design of circuits in the context of modern integrated-circuit technology.

- ENGR-E 312 Modern Computer Architecture (3 cr.) P: CSCI-C 335 or ENGR-E 201. Must be joint-listed with CSCI-B 443. This course introduces the basic hardware structure of a modern programmable computer, including the basic laws underlying performance evaluation. Students will learn about processor control and data paths and how machine instructions execute simultaneously through pipelining and superscalar and multicore execution, as well as about memory and caching. Credit not given for both ENGR-E 312 and CSCI-B 443.

- ENGR-E 313 Engineering Compilers (3 cr.) P: ENGR-E 201. Must be joint-listed with CSCI-P 423. This course covers the engineering of a compiler, from scanning to parsing, semantic analysis and transformations to code generation and optimization. The emphasis of this course is on the hands-on implementations of various components using industry-standard tools. Credit given for only one of ENGR-E 313, E 513, CSCI-P 423, or P 523.

- ENGR-E 314 Embedded Systems (3 cr.) P: ENGR-E 210. This course covers Embedded and Real-Time Systems designed for real-time multiprocessing and distributed processing. It discusses theoretical and practical concepts in real-time systems emphasizing both hard and soft real-time distributed multi-processing. Several operating systems (e.g. Xinu, Linux, VxWorks), computer architectures and process scheduling methods will be used to illustrate concepts. Credit not given for both ENGR-E 314 and E 514.

- ENGR-E 315 Digital Design with FPGAs (3 cr.) P: ENGR-E 110. This course introduces digital design techniques using field programmable gate arrays (FPGAs). It discusses FPGA architecture, digital design flow using FPGAs, and other technologies associated with field programmable gate arrays. The course study will involve extensive lab projects to give students hands-on experience on designing digital systems on FPGA platforms.

- ENGR-E 317 High Performance Computing (3 cr.) P: One of the following: ENGR-E 111, CSCI-C 200, C 212, or C 291. Familiarity with Linux/Unix command-line utilities.Students will learn the development, operation, and application of high performance computing systems prepared to address future challenges demanding capability and expertise in HPC. The course is interdisciplinary combining critical elements from hardware technology and architecture, system software and tools, and programming models and application algorithms with the cross-cutting theme of performance management and measurement. Credit not given for both ENGR-E 317 and E 517.

- ENGR-E 318 Engineering Networks (3 cr.) P: ENGR-E 201. Must be joint-listed with CSCI-P 438. This course will cover the engineering of computer networks, considering the architecture and protocols. This course focuses on hands-on implementation and network systems construction. Credit given for only one of ENGR-E 318, E 518, CSCI-P 438, or P 538.

- ENGR-E 319 Engineering Operating Systems (3 cr.) P: ENGR-E 201. Must be joint-listed with CSCI-P 436. The objective of this class is to learn the fundamentals of computer operating systems. This class approaches the practice of engineering an operating system in a hands-on fashion, allowing students to understand core concepts along with implementation realities. Credit given for only one of ENGR-E 319, E 519, CSCI-P 436, or P 536.

- ENGR-E 321 Advanced Cyber-Physical Systems (3 cr.) P: ENGR-E 210. This course is the entry point into the cyber-physical systems specialization. It provides in-depth coverage of core topics in cyber-physical systems. It will treat issues of data analysis and reactive actuation, as well as power management and mobility. The course will explore formal models for designing and predicting system behavior.

- ENGR-E 327 Automated Fabrication Machines (3 cr.) P: ENGR-E 210. This course will engage students in understanding fabrication machines as cyber-physical systems using computer numeric control (CNC), and in understanding how they work by designing, constructing, and programming such devices. This course will provide hands-on experience developing and using 2D and 3D graphics primitives and implementing devices that provide them.

- ENGR-E 332 Introduction to Modeling and Simulation (3 cr.) P: MATH-M 211, M 212, M 343, PHYS-P 221 and P 222. This course introduces computational modeling and simulation used for solving problems in many engineering fields. Basics of deterministic and stochastic simulation methods are covered. Optimization techniques, use of high-performance computing, and engineering applications of simulations are discussed.

- ENGR-E 340 Introduction to Computational Bioengineering (3 cr.) P: MATH-M 212 and BIOL-L 112. MATH-M 343 recommended. This course introduces key computational modeling techniques for bioengineering, with a focus on cell population kinetics, cell signaling, receptor trafficking, pharmacokinetics/pharmacodynamics, and compartmental and systems physiology methods. Concepts in control theory and optimization will also be applied to steer the modeled biological systems towards design objectives.

- ENGR-E 390 Undergraduate Independent Study (1-3 cr.) Department approval. Independent research based on existing literature or original work. A report, in the syle of a departmental technical report, is required. May be repeated for a maximum of 6 credit hours.

- ENGR-E 399 Topics in Intelligent Systems Engineering (1-3 cr.) Must be a student in the ISE undergraduate program or instructor's permission. Variable topic. Emphasis is on new developments and research in Intelligent Systems Engineering. May be repeated with different topics.

- ENGR-E 410 Engineering Distributed Systems (3 cr.) P: ENGR-E 319. Must be joint-listed with CSCI-P 434. Distributed systems are collections of independent elements that appear to users as a single system. This course considers fundamental principles in distributed system construction and explores the history of such systems from distributed operating systems to modern middleware and services. Examples and exercises from current distributed systems. Credit given for only one of ENGR-E 410, E 510, CSCI-P 434, or B 534.

- ENGR-E 416 Engineering Cloud Computing (3 cr.) P: One of the following: ENGR-E 111, CSCI-C 200, or C 212. The course covers basic concepts on programming models and tools of cloud computing to support data intensive science applications. Students will get to know the latest research topics of cloud platforms, parallel algorithms, storage and high level language for proficiency with a complex ecosystem of tools that span many disciplines. Credit not given for both ENGR-E 416 and E 516.

- ENGR-E 434 Big Data Applications (3 cr.) P: One of the following: ENGR-E 111, CSCI-C 200, or INFO-I 211. This is an overview course of Big Data Applications covering a broad range of problems and solutions. It covers cloud computing technologies and includes a project. Algorithms are introduced and illustrated. Credit given for only one of ENGR-E 434, E 534, INFO-I 423, or I 523.

- ENGR-E 435 Image Processing (3 cr.) Experience with signal processing or machine learning; Linear algebra and Calculus II recommended. The input or output of many engineering tools are images. Therefore, engineers need to know how to process them. Image processing will teach students how to design and implement their own algorithms for automatically detecting, classifying, and analyzing objects in images.

- ENGR-E 440 Computational Methods for 3-D Biomaterials (3 cr.) P: MATH-M 343 and PHYS-P 221. ENGR-E 340 recommended. This computational engineering course teaches key biophysics and numerical concepts needed to simulate 3-D biological tissues, including finite element methods, conservation laws, biotransport, fluid mechanics, and tissue mechanics. The entire course will combine lectures with hands-on lab projects to simulate 3-D biological materials, and prepare students for computational tissue engineering. Credit not given for both ENGR-E 440 and E 540.

- ENGR-E 441 Simulating Cancer as an Intelligent System (3 cr.) P: MATH-M 212 and one of the following: ENGR-E 111, CSCI-C 200, C 212, or C 291. This course explores cancer as an adaptive intelligent system, where renegade cells break the rules, reuse the body's natural processes to re-engineer their environments and evade treatments. We will use computational models to explore this system and the potential for future clinicians to plan treatments with data-driven models. Credit not given for both ENGR-E 441 and E 541.

- ENGR-E 451 Simulating Nanoscale Systems (3 cr.) Familiarity with a programming language recommended. Students will learn how to model and simulate material behavior at the nanoscale. Analysis and control of shape, assembly, and flow behavior in soft nanomaterials will be discussed. Applications to engineering problems at the nanoscale will be emphasized. Optimization methods, nonequilibrium systems, and parallel computing will be covered. Credit not given for both ENGR-E 451 and E 551.

- ENGR-E 483 Information Visualization (3 cr.) This course provides students with a working knowledge on how to visualize abstract information and hands-on experience in the application of this knowledge to specific domains, different tasks, and diverse, possibly non-technical users. Credit not given for both ENGR-E 483 and E 583.

- ENGR-E 484 Scientific Visualization (3 cr.) This course teaches basic principles of human cognition and perception; techniques and algorithms for designing and critiquing scientific visualizations in different domains (neuro, nano, bio-medicine, IoT, smart cities); hands-on experience using modern tools for designing scientific visualizations that provide novel and/or actionable insights; 3D printing and augmented reality deployment; teamwork/project management expertise. Credit not given for both ENGR-E 484 and E 584.

- ENGR-E 490 Engineering Capstone Design I (3 cr.) Junior or senior standing. Engineering Capstone Design I is one of two capstone requirements for all Intelligent Systems Engineering students. Students will design engineering projects based on their areas of concentration, which will be supported by dedicated faculty members. Students may choose to conduct advanced research, develop prototypes, design new products or redesign existing products.

- ENGR-E 491 Engineering Capstone Design II (3 cr.) Junior or senior standing. Engineering Capstone Design II is the second of two capstone requirements for all Intelligent Systems Engineering students. Students will design engineering projects based on their areas of concentration, which will be supported by dedicated faculty members. Students may choose to conduct advanced research, develop prototypes, design new products or redesign existing products.