CMPE210 Network Engineering
Credits: 3
Description: An introduction to network architectures and engineering. Topics will include network physical media, protocols, software interfaces, routing devices, performance, reliability, and security. Students completing this course will be able to design, build, test, and improve computer networks to meet a variety of goals including cost, reliability, throughput, latency, and security.
CMPE220 Computer Organization
Credits: 4
Description: An introduction into the organization and architecture of CPU, memory, and I/O devices, and the interaction between software and hardware. Topics include assembly language programming, Von Neumann architecture, representing data and instructions in memory, integer and floating point arithmetic in hardware, pipelining, memory systems, caching, the I/O system, and performance analysis. At the end of this course students will be able to write simple and complex programs in Assembly language, convert between C and Assembly, assess performance of a program on a machine, and understand how modern processors achieve multiple instructions per cycle.
CMPE230 Computer Security
Credits: 3
Description: An introduction to computer security. Topics will include: access controls, encryption, malicious software, denial of service attacks, intrusion detection, buffer overflow attacks, trusted computing, social engineering, physical security, and penetration testing. Students completing this course will be able to identify different types of cyber- and physical- attacks and the standard methods to prevent, detect, and defend against them.
CMPE310 Computer Systems Engineering
Credits: 3
Description: An introduction to computer systems engineering, with an emphasis on systems administration, computer system design, analysis, and testing. Students who complete this course will design, configure, and build computer systems to meet a set goals such as performance, reliability, or cost; and then install, configure, and manage a variety of UNIX and Windows operating systems and critical services.
CMPE320 Operating Systems
Credits: 4
Description: A study of operating systems concepts and interfaces, with a special emphasis throughout the course on the concept of abstraction and separating mechanism from policy as a design technique. Topics include UNIX shells and common commands, writing shell scripts, important system calls, performance benchmarking, OS impact on program design and performance, processes, multiprogramming, multiprocessing, threading, scheduling, process isolation, inter-process communication, mutual exclusion, deadlock detection and avoidance, file system design, permissions and protections, and RAID. At the end of the course, students will be able to describe the importance of abstraction as a design pattern, and use it to explain the organization of OS components, interact with the UNIX shell and write shell scripts, and write programs using important system interfaces, understand the performance impact of making system calls, and independently find sources to guide their future development.
CMPE322 Microcontrollers & Interfaces
Credits: 4
Description: An introduction to microcontroller programming and interfacing. Topics include: architecture of microcontrollers, mechanics of mapping voltages to logic signals, building a proper device abstraction layer, writing quality code, compliance with MISRA-C and other standards, GPIO, interrupts, timers, I2C, SPI, RS232, controller motors and servos, analog to digital conversion, displays, speakers, microphones, acting as a USB device, and designing complete embedded systems involving microcontrollers. By the end of the course, students will be able to design, build, test, and verify solutions involving microcontrollers. Students should have a basic understanding of circuits, voltage, current, resistors, and capacitors.
CMPE330 Advanced Computer Architectures
Credits: 3
Description: An advanced continuation of computer organization, this class will cover topics including Intel assembly language, high-performance computing with GPGPU/CUDA and OpenCL, an introduction to distributed processor systems and super-computers using MPI, and emerging architectures such as quantum computing.
CMPE411 OS Design and Implementation
Credits: 4
Description: This course explores the design and implementation of operating systems. Topics include designing interfaces between hardware and applications systems, creating layers of abstractions to extend lower-level services, bringing a CPU from POST to regular operation, development of device drivers and other services within the kernel, context switching, interrupt handling, building character and block drivers, deferred operations, memory mapping and DMA arbitration. By the end of the course, students will have written a primitive operating system, understand the device abstraction layer and how to integrate a device into it, and built device drivers for Linux and Windows
CMPE420 Digital and Reconfigurable Computing
Credits: 4
Description: An introduction to high-speed and reconfigurable computation using FPGAs. Topics include behavioral HDL modeling, simulation, and testing; developing peripherals to interface to a variety of devices such as RS232 and I2C; developing computational elements to off-load computing tasks from the CPU; direct memory access (DMA) and bus-mastering; generating and handling interrupts; mixed PS-PL interactions; prototyping circuits in an FPGA; and converting a design to a VLSI ASIC.
CMPE499 Engineering Design and Development
Credits: 2
Description: This is the integrated engineering capstone course that is shared between computer, electrical, and mechanical engineering students. Students will work together in teams to build requirements, design, build, and test an electro-mechanical component or system. Project topics vary every semester, although there is usually an external customer that will work with the students. The instructor of record for the course serves as the project manager, assessing the individual and team performance, and students will be assessed on their ability to act as a professional working in the field. The course meets for 2 credit hours per week reflecting the amount of time the students will meet as one collective group with the faculty, but students should expect to work substantially more hours with their team, outside of class. Graduate students are not permitted to take this course.
ELEC220 Linear Circuit Analysis
Credits: 4
Description: An introduction to electric circuit analysis techniques, including DC and AC circuit analysis techniques. Students will learn Volt-ampere characteristics for circuit elements. Students will analyze circuits with independent and dependent sources. The course will also introduce Kirchoff's laws for voltage and current, Thevenin's and Norton's theorems. The course will also introduce transient response of resistor-capacitor (RC), resistor-inductor (RL), and resistor-inductor-capacitor (RLC) circuits. Students will also analyze signals at frequency to examine sinusoidal steady-state and impedance and to study both instantaneous and average power. Finally, students will use PSPICE to model the ideal behavior of these systems.
ENGR100 Engineering Seminar 1
Credits: 1
Description: The goal of this course is to prepare the student for study in an engineering discipline. This will include general skills for achieving success in college in addition to an introduction to the engineering disciplines and the engineering development process.
ENGR110 Modeling and Simulation
Credits: 3
Description: An introduction to modeling physical systems and simulating them using scientific computation software. Topics will include modeling dynamic systems, the basic mathematics of modeling physical systems, including difference equations, arithmetic and geometric series, spring-damper systems, open- and closed- loop systems. To support these topics, students will learn to use the MATLAB and Simulink systems, including basic expression evaluation, scalar, vector, and multi-dimensional variables, conditionals, repetition, and writing basic functions.
ENGR120 Programming for Engineers
Credits: 3
Description: An introduction to programming for electrical engineers. This course is a highly focused introduction to programming in C language. It covers the basics of programming including procedures, variables, types, loop, and control structures. The course introduces basic computing resources, and introduces algorithmic solutions to common engineering and numerical problems.
ENGR200 Engineering Seminar 2
Credits: 1
Description: This course is focused on the tools that teams use to engineer solutions together. Participation in a team project will help the students learn about and apply current team coordination tools for project management, configuration management, and personal improvement.
ENGR300 Engineering Seminar 3
Credits: 1
Description: The goal of this course is to prepare the student for upper class courses and entering the workplace. Career preparation will include strategies for finding internships and full-time positions and preparing for the hiring process (building a resume, writing a cover letter, and interviewing). Academic preparation will be focused on how to find and read journal publications on a given topic.
ENGR310 Statistical Process Control
Credits: 3
Description: The course will develop the students understanding of statistical process control. A variety of control charts will be used for assessing process stability and estimation of process capability. We will also study how engineers design experiments based on statistical quality control for the purpose of controlling, improving, and optimizing the engineering process.
SWE101 Intro to Java
Credits: 1
Description: This course is designed to introduce the Java programming language to students who have learned other languages, such as C, C++, or Python. Students completing this course will learn about the Java language, the virtual machine, object oriented programming techniques, and test-driven development. Students who have taken SWE100 cannot take this course for credit.
SWE200 Design Patterns
Credits: 4
Description: Provides an advanced study of the concepts of object-oriented programming, with an emphasis on applying those concepts to software development. Many object design patterns have emerged as proven ways to structure object-oriented solutions to a wide range of key problems. This course provides hands-on experience with using object design patterns to solve a number of problems that recur in computer science. Students will develop a number of medium to large programs individually.
SWE300 Crafting Quality Code
Credits: 4
Description: This course will explore the differences between code that works and good code. This will include: designing during development, characteristics of interfaces, naming conventions, defensive programming, selecting data types, organizing code, controlling loops, unusual control structures, table driven methods. Students will explore open source projects to practice evaluating the quality of code.
SWE415 Interdisciplinary Development
Credits: 4
Description: The course is focused on building a product for a non-engineering customer. The class will be paired with another course or activity on campus which will act as the customer. The students will work with that customer initially to define a product and then throughout the semester, they will revise that definition and use agile development techniques to deliver the product to the customer