Courses in Computer Engineering

I CEN 140 Introduction to Engineering Design (3)
This course explores the topic of engineering design and teaches about and formalizes the design process and problem solving. Using a combination of team and individual projects/labs, assignments, and classroom lectures and presentations, students will learn how to formulate, articulate, and solve problems, how to work on a team to design things, and how to present the results of engineering work in oral and written form. Students will also learn about the different disciplines of engineering and the multidisciplinary nature of modern engineering design. Prerequisite(s): A MAT 112, A PHY 140 or 142, and I CEN 200, or permission of instructor.

I CEN 150 Introduction to Engineering Analysis (3)
This course introduces students to techniques, skills, and modern engineering tools to teach students logical and systematic ways to analyze and solve engineering problems. This course leverages course work in physics, computer science and mathematics. Prerequisite(s): I CEN 140.

I CEN 200 Programming for Engineers (4)
Introduction to programming for computer engineering majors and others with a strong interest in the discipline of computer engineering. The course will focus on broad theoretical concepts as well as language syntax. Students will learn how to program in this course by using C programming languages. This course will help students develop the critical thinking skills to design the logic flow for a program, irrespective of the programming language. Students will learn how to create structured, procedural programs using variables, functions, control statements and structures, memory management, pointers, and be comfortable with the key concepts, techniques, and software development tools used for writing programs in C to solve engineering problems. Hands-on programming with Arduino platform, an open-source electronics platform, to utilize the fundamental knowledge of programming for physical computing. The course will focus heavily on applications; tie every aspect of programming to specific applications, in either an independent field, or a part of some large software. Only one of I CEN 200 and I CEN/I CSI 201 may be taken for credit. Prerequisite(s): high school mathematics through precalculus. Prerequisite(s) or corequisite(s): A MAT 112.

I CEN 201 (= I CSI 201) Introduction to Computer Science (4)
Computer algorithms and their representation. The principle of information hiding and its relation to program block structure. File structure and access methods. The efficient use of computational resources. Program development and style. Only one of I CEN 200 and I CEN/I CSI 201 may be taken for credit.

I CEN 210 (= I CSI 210) Discrete Structures (4)
Proofs by induction; mathematical reasoning, propositions, predicates and quantifiers; sets; relations, graphs, and trees; functions; counting, permutations and combinations. Only one version may be taken for credit. Prerequisite(s) or corequisite: High School mathematics through pre-calculus and A MAT 112.

I CEN 213 (= I CSI 213) (formerly I CSI 310) Data Structures (3)
Commonly used abstract data structures and their implementation. The use of pointers and recursive programming. Stacks, queues, lists and trees, and their application to such problems as sorting and searching. Analysis of algorithms for using these structures. May not be taken by students with credit for I CSI 310. Must be completed with a grade of C or better in order to take I CSI 333. Prerequisite(s): I CSI/I CEN 201 or permission of department chair.

I CEN 280 Introduction to Circuits (3)
Review of electric circuit analysis techniques. Basic electronic and physical properties of semiconductors materials. Functional characteristics and electronic models of Silicon semiconductor diodes and transistors (field effect transistors and bipolar junction transistors). DC biasing, and static current-voltage (I-V) and transient behavior of transistors, and transistor circuits. Analog circuit applications of transistor such as single stage and multi-stage amplifiers, op-amps. Frequency response and feedback characteristics of transistor circuits. Digital circuit applications of single and multi-stage transistor circuits. Introduction and use of computer aided circuit design and simulation tools and techniques. Hands-on lab experimentation constructing circuits to test and measure functional and performance characteristics. Prerequisite(s): A PHY 150 or 152.

I CEN 333 (= I CSI 333) Programming at the Hardware Software Interface (4)
Instruction set architecture of contemporary computers; Boolean logic, memory, registers, instructions and interrupts. Assembly language programming; assembler passes, symbols, macros, function linkage and separate compilations. C language programming; syntax, control, types, abstractions, pointers and strings. Dynamic memory, standard and user written libraries. ANSI and C++ standards. Instruction set simulation. Only one version may be taken for credit. Prerequisite(s): a grade of C or better required in I CEN/I CSI 213.

I CEN 340 Digital Logic Design (3)
This course introduces students to Digital Logic Design. The course begins with binary (yes/no) phenomena and builds successively more complex components and systems, ending with a simple processor. Using a combination of team and individual projects/labs, students will discover how simple gates are built from switches, how components are built from gates, and how systems are built from components. Initial designs assume that there is no concept of time and that everything is immediately available. Time is then introduced, from which the concept of memory emerges, which greatly expands the devices that can be designed and used to create more complex systems. The final goal is to assemble a simple processor from the constituent components and to understand how software computations are performed on hardware. Prerequisite(s): I CEN/I CSI 210 or permission of instructor.

I CEN 350 Signals and Systems (3)
This course introduces students to Signals and Systems. The course is divided into three parts: introduction, theory, and applications of continuous ­time signals and systems, and theory and applications of discrete­-time signals and systems. The course is organized so that students not only get a solid understanding of the theory -- enhanced by analytic examples and software examples using MATLAB, learn about applications, but also develop confidence and proficiency in the material by working on analytic and computational problems. Prerequisites(s): A MAT 220, A MAT 311, I CEN 280.

I CEN 353 (= A PHY 353) Microprocessor Applications (3)
Applications of microprocessors to data collection and process control; the capabilities of typical microprocessors and the techniques used to interface them to external devices; input/output programming, use of the data and address busses; interrupt handling, direct memory access, and data communications; characteristics of peripheral devices such as keyboards, printers, A/D and D/A converters, sensors, and actuators. Three class periods each week. Only one version may be taken for credit. Prerequisite(s): I CEN/I CSI 201 or I CSI 204 or equivalent. An elementary knowledge of electricity is helpful.

I CEN 360 Emerging Technologies (3)
This course will explore current emerging technologies and related technical management practices on a global basis. The content of this course will vary from semester to semester. Each offering will cover an advanced engineering topic in Computer Engineering. May be repeated for credit when content varies. Prerequisite(s): permission of instructor.

I CEN 370 Digital Signal Processing (3)
This course covers the techniques of modern digital signal processing that are fundamental to a wide variety of application areas. The course covers the mathematical basis of discrete-time signal analysis, discusses the theory and implementation of fast Fourier transform algorithms, and discusses the design and implementation of digital filters. The coverage of the fundamentals is complemented with introductory treatments of several advanced techniques including linear prediction, adaptive filtering, and two-dimensional signal processing. The course concludes with a discussion of the application of digital signal processing techniques toward the solution of various types of practical problems. This course makes extensive use of MATLAB as an analysis, design, and visualization tool. Prerequisite(s): A MAT 220, I CEN 280, I CEN 350, A MAT 311, or permission of instructor.

I CEN 380 Introduction to Digital Circuits (3)
Analysis, design and simulation of digital transistor circuits which perform binary logic functions. Circuit design and simulation of atomic, logic functions: INVERT, AND, OR, NAND, NOR, and complex logic building blocks, such as multiplexors, decoders, adders, single-bit memory elements (flip-flops) and memory arrays. Introduction to computer aided, integrated circuit physical layout tools for implementation of integrated digital circuit macros. Design, simulation and implementation of digital systems using FPGAs (Field-Programmable Gate Arrays) and hardware design languages (HDLs). Analysis techniques of existing digital circuit designs, and design new, complex logic systems. Design, simulate and debugging of the basic elements of a microprocessor pipeline: data path, execution units, instruction memory, data memory, and attached input/output (I/O) elements using HDL and FPGAs. Prerequisite(s): I CEN 280 and I CEN 340.

I CEN 400 (= I CSI 400) Operating Systems (3)
Historical overview; operating system services; mass storage file organization; memory management in multiprogrammed systems; virtual memory; resource allocation; concurrent processes; deadlock detection and prevention; security; the design of contemporary operating systems such as UNIX. Only one version may be taken for credit. Prerequisite(s): I CEN/I CSI 333.

I CEN 404 (= I CSI 404) Computer Organization (3)
An introduction to the logical organization of the hardware components of computing systems. Topics include logic design from a functional point of view, data representation and processing, description of major components such as the central processing unit and memory, and control and communication within the components and in the system. Only one version may be taken for credit. Prerequisite(s): I CEN/I CSI 210 and I CEN/ I CSI 333.

I CEN 410 Internet of Things (3)
In this course students will study new communication paradigms that are enabled by the ubiquity of heterogeneous devices, networks and applications. The course will consist of three components: lectures on emerging networks and their artifacts along with studying research publications to understand their practical challenges; bridging of the cyber and the physical world using sensors, embedded in mobile devices and building applications using the Android sensor programming framework; and analytics for large-scale data and business models for Big Data. Students are expected to have introductory knowledge about networking and communication systems along with foundations in programming and statistics. Prerequisite(s): I CEN/I CSI 416.

I CEN 415 (= A PHY 415) Electronics (3)
Transistors and their characteristics; electronic circuits, field effect transistors and applications, amplifiers, low and high frequency response; operational amplifiers; consideration of control-circuit design; fast-switching and counting devices; integrated circuits and their designs. Two class periods and one three-hour laboratory each week. Only one version may be taken for credit. Prerequisite(s): A PHY 150.

I CEN 416 (= I CSI 416) Computer Communication Networks (3)
Introduction to computer communication networks. Equal emphasis on all layers of the ISO reference model and the TCP/IP protocol suite. Topics include physical networks, sliding window protocols, remote procedure call, routing, naming and addressing, security, authentication, performance, and applications. Only one version may be taken for credit. Prerequisite(s): I CSI/I CEN 400 or I CSI 402, and A MAT 367 or A MAT 370.

I CEN 417 Optical Communications (3)
The future provision of Internet-based high-bandwidth applications has led to an explosion in demand for high-speed optical communication systems. This course aims to provide knowledge of the strategies and techniques involved in the design and implementation of optical communication technologies and how these optical links form networks. This course is designed to present the operation of modern optical devices driving the growth in optical communication systems and the broader picture of optical fiber and free space networks for future communication applications. The course covers: building blocks of optical communication systems such as transmitters, receivers, transmission fibers, and amplifiers; fundamental considerations in system design including signal to noise ratio, fiber nonlinearity, chromatic dispersion, polarization mode dispersion, modulation formats, etc.; and the latest developments in high data rate, high spectral efficiency optical communication systems. Many practical and useful examples are also included. Prerequisite(s): I CEN 280, A MAT 220 and 311.

I CEN 430 Systems Analysis and Design (3)
The application of information technology has extended to all quarters of the business world. While the nature and the scope of information systems vary widely depending on the business context, the fundamental knowledge underlying their development remains the same. This course aims to provide technology students with a solid understanding of the important methodologies and tools & techniques related to the development of information systems in a variety of contexts. It is designed to complement and enhance the content of I CEN 440 (Design Lab I) by providing a framework for the analysis and design of the Design Lab project. Prerequisite(s): I CEN 150 and 380.

I CEN 440 Design Lab I (3)
This course is part one of a two-semester-long capstone design lab that serves as a significant educational experience for the student to enhance their professional skills and the application of their growing engineering and technical expertise. The two-semester-long capstone design lab provides the opportunity for teams of computer engineering students to propose, prototype/design, build, test, demonstrate, present and fully document a working prototype of a sophisticated electronic system. The two-semester-long capstone design lab represents a complex project that demonstrates the engineering design process and project engineering as practiced in industry. Student teams apply the design process by developing a project under the guidance of industry sponsors and/or faculty through design, fabrication, test and evaluation. In addition to technical feasibility studies, students also explore the concept of the engineer as an entrepreneur by considering their design for technology transfer for commercial use. Prerequisite(s): I CEN 350, I CEN/I CSI 400, and I CEN 380. Prerequisite(s) or corequisite(s): I CEN 430.

I CEN 450 Design Lab II (6)
This course is part two of the final capstone design lab, where teams of computer engineering students build, test, demonstrate, and document the electronic system they proposed, specified, modeled, and designed during part one of capstone design lab (I CEN 440). Students conduct a product demonstration that shows how their physical design meets all engineering specifications, standards, and constraints. Students also will continue the validation of their design for technology transfer. This includes finalized go-forward business and marketing plans of their design for commercial use. This course fully familiarizes students with realistic design and project constraints that include economic, environmental, social, political, ethical, health, safety, manufacturability, sustainability and social impacts as practiced in industry. Prerequisite(s): I CEN 440.

I CEN 454 (= A PHY 454) Microprocessor Applications Laboratory (3)
Complements the theoretical development presented in I CEN/A PHY 353. Centers around practical laboratory applications in both hardware and software of a particular microprocessor. Students prototype a minimum system and expanded system. Applications include keyboard, printer, display, A/D, D/A, and control functions. A knowledge of a microprocessor and digital logic functions is desirable. Only one version may be taken for credit. Prerequisite(s): I CEN/A PHY 353 or A PHY 415 or permission of instructor.

I CEN 460 Mobile Design Engineering (3)
Building on students' basic knowledge of wired computer networks, this course will explore mobile wireless networks. Students will learn about current protocols and technologies in mobile networks. Through hands-on exercises students will gain experience in wireless networks operation and configuration. Successful completion of the course will require detailed prior understanding of network-based communications, Internet protocol operations, strong systems programming skills and familiarity with UNIX. Prerequisite(s): I CEN/I CSI 400 and I CEN/I CSI 416.

I CEN 461 GPU Architecture and Programming (3)
This course introduces the students the concept of massively-parallel programming. It is divided into two parts: in the first part, the students are expected to develop multi-threaded programs in the C programming language using pthreads. In the second part, the concepts that are learned in the first part are extended to the GPU architecture. Nvidia CUDA programming language is used as the main tool to develop GPU programs. In the first part of the course, the students use their SUNY Albany Unix accounts to login to the "GPU Cluster" and develop pthreads based parallel programs. In the second part, they use the same logins to schedule their GPU compute-tasks on the same cluster. Prerequisite(s): I CEN 200 and I CEN/ICSI 404.

I CEN 464 Robotics (3)
An introduction to the fundamentals of robotics, including configuration space, transformation matrix, kinematics, motion planning, and a brief introduction to robot manipulation. In addition to simulation environments, the course uses robot arms and small drones as hardware platforms for students to practice programming and test algorithms. Current final projects include navigating drones through a small field of obstacles and the use of a robot arm to pick up objects. Prerequisite(s): A MAT 220, I CEN 210 and 213.

I CEN 470 Human Computer Interaction (3)
An introduction to the design principals of Human-Computer Interaction (HCI), including techniques for rapid prototyping and evaluation of multiple interface alternatives. The study of the computer visual interface, including human face tracking, expression recognition, hand gesture tracking and recognition, pedestrian detection and tracking, pose tracking and action recognition. A survey of the latest research papers and technologies in the field. The course includes a project, where students will pick and implement a relevant visual tracking or recognition project in HCI. Prerequisite(s): I CEN/I CSI 333.

I CEN 480 VLSI Design and Fabrication (3)
This course provides a survey of VLSI technology and very large-scale integrated systems. It considers problems that occur when ordinary circuits are replicated to involve millions of devices. It covers CMOS technology, and design styles up to the point of submission for fabrication. Computerized methods with high-density circuits with optimized speed and power consumption are utilized. Students perform simple layouts and simulations suitable for extension to a very large scale. Prerequisite(s): I CEN 454/A PHY 454.

I CEN 497 Independent Research in Computer Engineering (1-3)
Independent research project under faculty guidance. Students will present their research as appropriate. May be repeated for credit up to a total of 6 credits with permission of department. Prerequisite(s): permission of instructor.