Graduate Programs
Courses
Engineering
- ENGR-E 500 Introduction to the Intelligent Systems Engineering Program (1 cr.) This course provides an introduction to Intelligent Systems Engineering and an overview of the various degree specializations that are available. ISE is a set of modern Systems Engineering areas with various interrelations. This course provides a broad introduction and details of faculty research areas.
- ENGR-E 501 Introduction to Computer Engineering (3 cr.) This course covers computer engineering and parallel computer architecture for HPC in intelligent systems engineering. Topics include multi-core processors, cache coherence, data centric computing, SIMD, GPU, FPGA, accelerators, and heterogeneous computing architecture. The course will focus on fundamental parallel computer architectures, evaluation and the tradeoffs in design, and their use.
- ENGR-E 502 Introduction to Cyber Physical Systems (3 cr.) This covers a broad range of CPS with both uses and component technologies. Robots and Smart systems are covered in some detail. Algorithms, security, control theory, software, device hardware and mechanical construction issues are covered. CPS laboratory experience will be an essential part of course. Current research opportunities are covered.
- ENGR-E 503 Introduction to Intelligent Systems (3 cr.) Systems Engineering (SE) can refer to several different concepts, disciplines, and technical skills needed in designing and building systems of systems. This course covers fundamental principle and five use cases with special attention to challenges and opportunities coming from modern computing infrastructure, the internet of things and artificial intelligence.
- ENGR-E 504 Introduction to Bioengineering (3 cr.) Bioengineering (BE) and Biomedical Engineering (BME) refer to techniques to manipulate and control living organisms directly or through the development of novel tools. The first half focuses on measurement and the second half on control, with special attention to the enabling role of computation.
- ENGR-E 505 Introduction to Nano-Engineering (3 cr.) Miniaturization of devices and systems to nanoscale boosted in the last couple of decades, enabling unattainable hitherto functionalities and bridging the quantum realm with the mainstream of technological paradigm. Current course provides a broad overview of the scientific background as well as the cutting-edge technological achievements of engineering on nanoscale.
- ENGR-E 506 Introduction to Neuro-Engineering (3 cr.) One programming course, linear algebra and calculus are required. One AI or Machine Learning course recommended. Understand concepts of neuro-engineering with an applied mathematics focus. Learn the principles of building intelligent machines for neuro-engineering. This is an introductory course to ISE Masters and Ph.D. program in Neuro-Engineering. It will have guest lectures, and the basic material will be interleaved with talks on relevant Bloomington campus research.
- ENGR-E 507 Introduction to Environmental Engineering Intelligent Systems (3 cr.) Develop a foundation in Environmental Engineering practices and challenges by exploring how engineered systems promote better predictions about water quality, climate and atmospheric conditions. This course will cover fundamental principles and three use cases to examine unique challenges and opportunities stemming from data analytics, internet of things and modern computing.
- ENGR-E 510 Engineering Distributed Systems (3 cr.) 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 510, E 410, CSCI-P 434, or B 534.
- ENGR-E 511 Machine Learning for Signal Processing (3 cr.) Students should be accustomed to Calculus, Linear Algebra, Probability Theory, CSCI-B 555 and one of the scientific programming languages, MATLAB, Python, or R. The course discusses advanced signal processing topics as an application of machine learning. Hands-on signal processing tasks are introduced and tackled using a problem-solving manner, so students can grasp important machine learning concepts. The course can help students learn to build an intelligent signal processing system in a systematical way.
- ENGR-E 512 Advanced Computer Architecture (3 cr.) ENGR-E 501 recommended. The course will cover advanced computer architecture topics for data centers regarding multi-core processor hardware, circuit level and micro-architecture level main memory modeling, circuit level and micro-architecture level storage design, GPU architecture, processing-in/near-memory, (convolutional neural network) accelerator design and data center architecture.
- ENGR-E 513 Engineering Compilers (3 cr.) 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 513, E 313, CSCI-P 423, or P 523.
- ENGR-E 514 Embedded Systems (3 cr.) 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 514 and E 314.
- ENGR-E 516 Engineering Cloud Computing (3 cr.) Experience with Windows or Linux using Java and scripts. This 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.
- ENGR-E 517 High Performance Computing (3 cr.) Beginner/intermediate C/C++ experience and familiarity with Linux/Unix command-line utilities recommended. Students will learn about the development, operation, and application of HPC systems prepared to address future challenges demanding capability and expertise. The course combines 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 517 and E 317.
- ENGR-E 518 Engineering Networks (3 cr.) 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 518, E 318, CSCI-P 438, or P 538.
- ENGR-E 519 Engineering Operating Systems (3 cr.) Programming experience in C recommended. 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 519, E 319, CSCI-P-436 or P 536.
- ENGR-E 522 HPC and Cloud Computing for Large Scale Image Applications (3 cr.) ENGR-E 534, SPEA-E 519, GEOG-G 535, or GEOG-538 recommended. Java and Python will be used as programming languages. Understanding of machine learning and/or image processing is helpful. This course describes big data techniques for sensors and remote sensing explaining how one architects analysis systems for sensors and remote imagery. Algorithms, software systems, and storage issues are addressed. The impact of user interfaces is covered. Streaming and batch examples from satellite, internet of things and physics data.
- ENGR-E 523 Internet of Things (3 cr.) Java, C, and Python will be used as programming languages. This course covers the Internet of Things (IoT) including the emerging Industrial IoT. Power, security, networking, system architecture from cloud to device are covered. Integration with big data and use cases are discussed. Laboratory sessions are integrated.
- ENGR-E 531 Physical Optimization (3 cr.) Java and/or Python will be used as programming languages. This course describes applications of optimization based on physical analogies: genetic algorithms, swarm intelligence, simulated and deterministic annealing, neural networks. They are related to statistical physics, variational methods, evolution, information theory, agent-based systems, cellular automata, complex systems and placed in a broad context of physical computation and other optimization approaches.
- ENGR-E 532 Systems Engineering (3 cr.) Python will be used as programming language. This course covers methodologies and tools used to deal with large complex interactive multi-disciplinary systems of systems and to deliver performance that meet user requirements in an eco-friendly fashion. Students will see several examples and apply SE to an example of their own.
- ENGR-E 533 Deep Learning Systems (3 cr.) This course teaches the pipeline for building state-of-the-art deep learning-based intelligent systems. It covers general training mechanisms and acceleration options that use GPU computing libraries and parallelization techniques running on high performance computing systems. The course also aims at deploying the networks to the low-powered hardware systems.
- ENGR-E 534 Big Data Applications (3 cr.) Java and/or Python will be used as programming languages. 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 534, E 434, INFO-I 423, or I 523.
- ENGR-E 535 Image Processing for Medical Applications (3 cr.) One programming course, linear algebra and calculus are required. Any machine learning or computer vision course would be helpful, but not necessary. Learn how to build intelligent algorithms and software for medical imaging that can help medical doctors to treat their patients and researchers to understand how the body works. Students will be familiarized with algorithmic techniques such as tracking, denoising, warping, segmentation, model fitting, optimization and interactive visualization of medical datasets.
- ENGR-E 537 Rapid Prototyping for Engineers (3 cr.) Permission of instructor. Protoyping - materialization of concepts - is essential for design and engineering of a product. The course overviews the modern computer aided design (CAD) - computer aided manufacturing (CAM) approach to prototyping. Students will perform a case study practicum, characterizing performance envelope of fused deposition modeling (FDM) 3D printer.
- ENGR-E 540 Computational Methods for 3-D Biomaterials (3 cr.) 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 540 and E 440.
- ENGR-E 541 Simulating Cancer as an Intelligent System (3 cr.) Familiarity with advanced engineering mathematics. 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 541 and E 441.
- ENGR-E 551 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 551 and E 451.
- ENGR-E 583 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 583 and E 483.
- ENGR-E 584 Scientific Visualization (3 cr.) 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 584 and E 484.
- ENGR-E 591 Graduate Internship (1-6 cr.) Department approval. Students gain professional work experience in an industry or research organization setting, using skills and knowledge acquired in Intelligent Systems course work. May be repeated for a maximum of 6 credit hours.
- ENGR-E 599 Topics in Intelligent Systems Engineering (1-3 cr.) Graduate standing. Variable topic course. Emphasis is on new developments and research in Intelligent Systems Engineering. May be repeated with different topics.
- ENGR-E 616 Advanced Cloud Computing (3 cr.) Java and Python will be used as programming languages. This course describes Cloud 3.0 in which DevOps, Microservices, and Function as a Service is added to basic cloud computing. The discussion is centered around the Apache Big Data Stack and a major student project aimed at demonstrating integration of cloud capabilities.
- ENGR-E 621 Software Defined Systems (3 cr.) P: ENGR-E 516 or E 616. Java and Python will be used as programming languages. This course describes the emerging world of distribute intelligent systems where each system component has internal and external sources of intelligence that are subject to collective control. Examples are given from computers, networks, vehicle systems, digital manufacturing, and robotics. Performance and fault tolerance and system management are discussed.
- ENGR-E 623 Applied Streaming Data Systems (3 cr.) Java, C, and Python will be used as programming languages. This course covers the software and algorithm engineering of streaming data systems in the cloud with an emphasis on use in industry and the internet of things.
- ENGR-E 687 Graduate Independent Studies in Intelligent Systems Engineering (1-6 cr.) Independent study under the direction of a faculty member, culminating in a written report and/or software development and/or systems/hardware development and/or documented laboratory experience. May be repeated for credit.
- ENGR-E 890 Thesis Readings and Research (1-6 cr.) Department approval. Research under the direction of a member of the graduate faculty leading to a Ph.D. dissertation. May be repeated for a maximum of 6 times or 36 credit hours.
- ENGR-G 901 Advanced Research (6 cr.) Ph.D. dissertaion research after the completion of all course requirements. May be repeated a maximum of 6 times.