The Electrical Engineering and Computer Science department offers a wide variety of courses in electrical engineering, computer engineering, and computer science.


Electrical Engineering Courses

ELEC 232 - Circuits
3 Semester Hours

Introduction to techniques in electrical circuit analysis, including branch, node, and mesh methods; Thevenin and Norton theorems; step and sinusoidal responses of RLC circuits; operational amplifier circuits; single phase power.

Lecture, 3 hours.
Prerequisites: CMSI 185 or ENGR 240; MATH 132; PHYS 201 recommended.

ELEC 260 - Introduction to Electricity and Applications
3 Semester Hours

Presentation of a brief history of electricity and electrical devices. Introduction to basic concepts of circuit and system analysis, electronic instruments, devices, and modern electric equipment. Demonstrations of concepts and devices are included.

Lecture, 3 hours.
Prerequisite: MATH 101 or higher, or placement into MATH 106 or higher.

ELEC 281 - Logic Design
3 Semester Hours

Introduction to computer systems, number systems. Boolean algebra, combinational and sequential logic design, minimization and analysis techniques. Concepts of programmable logic devices.

Lecture, 3 hours.

ELEC 301 - Junior Lab I
3 Semester Hours

Introduction to the use of contemporary lab equipment and techniques of measurement and experimentation; introduction to technical report writing; class is used to provide a laboratory experience related to junior level courses.

Laboratory, 3 hours; Lecture, 1 hour.
Prerequisites: ELEC 281 and concurrent enrollment in ELEC 333 and 353 or permission of the instructor.

ELEC 302 - Junior Lab II
3 Semester Hours

Continuation of ELEC 301 with emphasis on design; introduction to use of CAD tools and FPGA-based system design.

Laboratory, 4 hours.
Prerequisites: ELEC 301 and 383; concurrent enrollment in ELEC 354.

ELEC 311 - Electronics and Instrumentation
3 Semester Hours

Introduction to circuit principles, amplifiers, op-amps, transducers, digital components and systems, system analysis, and instrumentation techniques.

For mechanical engineering or science majors.

Lecture, 3 hours.
Corequisite: ELEC 312.

ELEC 312 - Electronics and Instrumentation Lab
0 Semester Hours

Concurrent laboratory for ELEC 311.

Laboratory, 2 hours.
Corequisite: ELEC 311.

ELEC 313 - Electronics and Instrumentation
3 Semester Hours

Introduction to circuit principles, amplifiers, op-amps, digital components and systems, power and machines, and instrumentation techniques.

For civil engineering or science majors.

Lecture, 3 hours.

ELEC 333 - Circuit Applications
3 Semester Hours

Laplace transform applications, network functions, frequency response, analog filters, two-ports, three phase power, Fourier series.

Lecture, 3 hours.
Prerequisites: ELEC 232 and MATH 245.

ELEC 353 - Electronics I
3 Semester Hours

Fundamentals of semiconductor devices and the physics of their operation. Applications of semiconductor devices in electronic circuits and device modeling. Introduction to CAD tools. Design of single stage amplifiers.

Lecture, 3 hours.

Prerequisites: ELEC 232.

ELEC 354 - Electronics II
3 Semester Hours

Introduction to engineering design methods utilized in the synthesis of contemporary analog electronic circuits including extensive use of CAD tools. Topics include multitransistor circuits, large signal limitations, feedback techniques, amplifier frequency response, stability and oscillation.

Lecture, 3 hours.

Prerequisite: ELEC 353.

ELEC 361 - Electromagnetics
3 Semester Hours

Introduction to Maxwell’s equations, wave propagation, transmission line theory, and the solution of static and time varying field problems.

Lecture, 3 hours.
Prerequisites: MATH 355 and PHYS 201.

ELEC 371 - Linear Systems
3 Semester Hours

Time and frequency domain analysis of continuous and discrete linear systems including simulation diagrams, state variable analysis, Fourier and Z transforms.

Lecture, 3 hours.
Prerequisites: ELEC 333 and MATH 355 or concurrent enrollment in MATH 355.

ELEC 383 - Introduction to Microprocessors
3 Semester Hours

Basic concepts in design and organization of microprocessors and microcomputers. Assembly language programming design for incorporating peripheral devices in solving application designs.

Lecture, 3 hours.
Prerequisite: ELEC 281.

ELEC 385 - Computer Systems Design
3 Semester Hours

Formal description of digital systems. Design of functional subsystems. Organization and design of general purpose digital computers and of special purpose digital systems.

Lecture, 3 hours.
Prerequisite: CMSI 284 or ELEC 383.

ELEC 398 - Special Studies
1-4 Semester Hours
ELEC 399 - Independent Studies
1-4 Semester Hours

ELEC 400 - Design Methodology
2 Semester Hours

An introduction to systems engineering, including a study of design methodology and development of professional project-oriented skills such as communication, team management, creative problem solving, interpersonal management, and leadership skills.

Lecture, 2 hours.
Prerequisite: Concurrent enrollment in ELEC 401.

ELEC 401 - Senior Lab I
3 Semester Hours

Course is intended to provide a laboratory experience related to other senior level courses; emphasis is on design, technical report writing, and oral presentation.

Laboratory, 4 hours.
Prerequisites: ELEC 302, 354, 383, concurrent enrollment in ELEC 400.

ELEC 402 - Senior Project
3 Semester Hours

A study of design methodology and development of professional project-oriented skills including communication, team management, creative problem solving, interpersonal management, and leadership skills. Team project activities are used to apply project-oriented skills to solution of design problems. Periodic design reports and design reviews are presented to and critiqued by the faculty and the design team.

Lecture, 1 hour; Laboratory, 3 hours.
Prerequisites: ELEC 400 and 401.
Corequisite: ENGR 400.

ELEC 423 - Communications I
3 Semester Hours

Introduction to signals, spectra, Fourier Transforms, AM, FM, and digital communication systems.

Lecture, 3 hours.
Prerequisite: ELEC 371.

ELEC 424 - Communications II
3 Semester Hours

Probability and random processes, correlation and power spectral density, noise and signal detection, analysis of communication links will be discussed.

Lecture, 3 hours.
Prerequisite: ELEC 423 or permission of the instructor.

ELEC 453 - Digital Integrated Electronics
3 Semester Hours

Extensive coverage of digital integrated circuit design, including TTL, NMOS, CMOS and BiCMOS digital logic circuits, Read Only Memory (ROM), and Random Access Memory (RAM).

Lecture, 3 hours.
Prerequisites: ELEC 281 and 354.

ELEC 462 - Microwave and Optical Communications
3 Semester Hours

Applications of electromagnetic theory. Topics include transmission lines, waveguides, impedance transformations and matching, passive devices, scatter parameters and their applications in circuits, antennas and wave propagation, fiber optics, and other communication links.

Lecture, 2 hours; Laboratory, 3 hours.
Prerequisite: ELEC 361.

ELEC 472 - Control Systems
3 Semester Hours

Analysis and design of feedback systems using root locus, Bode, Nyquist, and state variable techniques; introduction to discrete feedback control system analysis.

Lecture, 3 hours.
Prerequisite: ELEC 371.

ELEC 481 - Introduction to Computer Networks
3 Semester Hours

This course provides a basic introduction to computer networking. The topics covered include: types and uses of computer networks, data transmission, protocols and protocol layering, packets, message transactions, layered architecture, and a client-server introduction.

Lecture, 3 hours.
Prerequisites: Senior standing and permission of instructor.

ELEC 498 - Special Studies
1-4 Semester Hours
ELEC 499 - Independent Studies
1-4 Semester Hours

ELEC 521 - Introduction to Communication Systems
3 Semester Hours

The concept of signal formulation, modulation, transmission and reception, and demodulation of signals in noise will be discussed.

Prerequisites: ELEC 423 and 532, or equivalents.

ELEC 525 - Digital Signal Processing
3 Semester Hours

The representation, analysis, and processing of discrete signals are discussed. Topics include sampling, quantization, Z-transform of signal, discrete Fourier and fast Fourier transforms, analysis and design of digital filters, and spectral estimation of random digital signals.

Prerequisite: ELEC 371.

ELEC 532 - Probability and Random Processes
3 Semester Hours

Studies of probability, random variables, and stochastic processes, correlation, power spectral density, and linear mean-square estimation with emphasis on their application to electrical engineering are included.

Prerequisite: Senior or graduate standing.

ELEC 561 - IC Fabrication Processes
3 Semester Hours

Overview of processes in manufacture of integrated circuits. Topics include: single crystal growth, oxide growth, photolithographic processes, ion implantation and impurity diffusion, metal deposition, and passivation and packaging of chips. Use is made of Unix workstations for modeling and simulation.

Prerequisite: ELEC 353 or equivalent.

ELEC 562 - Digital System Design with VHDL
3 Semester Hours

Computer aided design of digital VLSI (Very Large Scale Integrated) systems using Very High Speed Integrated Circuits (VHSIC) Hardware Description Language (VHDL).

Prerequisites: ELEC 281 and 383, or equivalents.

ELEC 563 - ASIC Design
3 Semester Hours

Topics include programmable logic devices and gate array architectures, programmability of PLDs and gate arrays, field programmable gate arrays (FPGAs), and applications of FPGAs in digital system design. Course includes laboratory experiments and extensive use of Computer Aided Design tools.

Prerequisite: ELEC 383 and 562, or permission of instructor.

ELEC 567 - Introduction to Digtial VLSI Design
3 Semester Hours

Custom and semi-custom design of VLSI circuits using standard cells, design methodologies of advanced complementary metal-oxide-semiconductor (CMOS) circuits, and simulation of designed circuits will be emphasized. At the end of the semester, circuits designed by the students will be sent for fabrication through MOSIS and later tested by the students for functionality.

Prerequisite: ELEC 383 or permission of instructor.

ELEC 583 - Finite State Machines
3 Semester Hours

An introduction to the theory and design of finite state automata and sequential machines.

Prerequisite: ELEC 281 or equivalent.

ELEC 584 - Introduction to Microprocessors II
3 Semester Hours

Design and applications of 32-bit microprocessors. Topics include: basic concepts, software, architecture, programming, interfacing, and system design.

Prerequisite: ELEC 383 or equivalent.

ELEC 585 - Computer Organization and Architecture
3 Semester Hours

System structure of minicomputers and main frame computers. Structured memory based systems; parallel and multiunit processors; introduction to input/output processing.

Prerequisite: ELEC 385 or equivalent.



Computer Science Courses


CMSI 182 - Introduction to Computer Science
3 Semester Hours

Great ideas in computer science, including some programming using a contemporary programming language.

Lecture, 3 hours.
CMSI 185 - Computer Programming
3 Semester Hours

Introduction to algorithms and computer programming using Java.

Lecture, 3 hours.
CMSI 186 - Programming Laboratory
3 Semester Hours

Workshop in Java programming, treating one medium-sized application every two weeks in a laboratory setting. Typical projects: discrete simulation, randomized estimation, maze solving, dynamic programming, large-number arithmetic, numerical methods, GUIs.

For majors and minors only.
Prerequisite: A grade of C (2.0) or better in CMSI 185.
CMSI 261 - Epistemological Foundations of Computer Science
3 Semester Hours

A study of the philosophical and epistemological roots of computer science. Topics include: language, thought, cognition, logic, computation, the Church-Turing thesis, computer programming, and artifi cial intelligence.

Lecture, 3 hours.
Prerequisite: MATH 101 or higher, or placement into MATH 106 or higher.
CMSI 264 - Cryptography through the Ages
3 Semester Hours

Descriptions of mathematical systems that have been used for enciphering and deciphering information, and a study of the context in which these systems arose.

Lecture, 3 hours.
Prerequisite: MATH 101 or higher, or placement into MATH 106 or higher.
CMSI 281 - Data Structures and Algorithms I
3 Semester Hours

Introduction to data types, information structures, and algorithms. Topics include: collection classes and interfaces for sets, lists, stacks, queues, and dictionaries; implementation techniques such as arrays, linked lists, and efficient tree structures; introduction to computational complexity; elementary sorting; hashing.

Lecture, 3 hours.
Prerequisite: A grade of C (2.0) or better in CMSI 185.
CMSI 282 - Data Structures and Algorithms II
3 Semester Hours

Algorithm paradigms, with an emphasis on combinatorial search. Topics include: generating combinatorial objects; greedy methods; dynamic programming; randomized algorithms; modern heuristics such as genetic programs and simulated annealing; advanced sorts and order statistics; cake-cutting and fair division; graph algorithms; computational geometry.

Lecture, 3 hours.
Prerequisite: CMSI 281.
CMSI 284 - Computer Systems Organization
3 Semester Hours

Basic principles of computer systems. Topics include: data representations, instructions and instruction formats, assemblers and assembly languages, linking and loading, process execution, interrupt and device-handling, file management, and mixed-language programming.

Lecture, 3 hours.
CMSI 298 - Special Studies
1-3 Semester Hours

CMSI 355 - Networks
3 Semester Hours

A detailed study of the design and use of internetworking technologies in modern digital communication systems. Topics include: routing and control protocols, signalling, multicasting, OSI model, sockets, IPv4, IPv6, UDP, TCP, ARP, ICMP, IGMP, Mobile IP, DNS, SMTP, FTP, VoIP, and HTTP.

Lecture, 3 hours.
Prerequisite: CMSI 284.
CMSI 365 - Enterprise Production Practicum
1-3 Semester Hours

The design, construction, and management of an online information system. Experience will be gained producing an in-use online system with emphasis on stability and usability for the target audience.

Consent of instructor required.
This course may be repeated for up to 3 semester hours of credit.
CMSI 370 - Interaction Design
3 Semester Hours

Introduction to interaction design and human-computer interaction, with equal emphasis on 1) learning how to design and evaluate interaction architectures and 2) learning how to use existing frameworks to implement such architectures. Topics include: interaction guidelines, principles, and theories; usability engineering; the model-view-controller (MVC) paradigm; and current frameworks such as Swing, GLUT, and Cocoa.

Lecture, 3 hours.
Prerequisite: CMSI 281.
CMSI 371 - Computer Graphics
3 Semester Hours

Introduction to interactive computer graphics, emphasizing raster-scan techniques. Topics include the design and use of graphics packages and standards such as OpenGL and Java2D, graphics engines, animation, three dimensional modeling, computational geometry, shading, and ray tracing.

Lecture, 3 hours.
Prerequisite: CMSI 281.
CMSI 385 - Introduction to the Theory of Computation
3 Semester Hours

Introduction to the formal theory of computation. Topics include: finite automata and regular sets; context-free grammars and pushdown automata; Turing machines and computability; intractability.

Lecture, 3 hours.
Prerequisites: CMSI 281 and MATH 248.
CMSI 386 - Programming Languages
3 Semester Hours

A comparative study of the rationale, concepts, design, and features of several major programming languages. Topics include the role of bindings, control fl ow, types, subroutines, modules, objects, and concurrency. Major attention is given to C, Java, ML, Perl, and JavaScript.

Lecture, 3 hours.
Prerequisite: CMSI 284.
CMSI 387 - Operating Systems
3 Semester Hours

Concepts in the design of operating systems, including: processes, mutual exclusion, synchronization and message-passing, memory management, multiprogramming, paged allocation and paging policies, resource and I/O management, file systems, and security.

Lecture, 3 hours.
Prerequisite: CMSI 284.
CMSI 398 - Special Studies
1-4 Semester Hours

CMSI 399 - Independent Studies
1-4 Semester Hours

CMSI 401 - Software Engineering Lab
3 Semester Hours

Specification, design, and implementation of large programs in a group setting, including the software deveopment life-cycle and use of the Unified Modeling Language (UML) for specifying, visualizing, and documenting models.

Lecture and Laboratory, 3 hours.
Consent of instructor required.
CMSI 402 - Senior Project Lab
4 Semester Hours

Analysis, design, implementation, and presentation of a large-scale, individual project, demonstrating mastery of the computer science curriculum.

Lecture and Laboratory, 4 hours.
Consent of instructor required.
CMSI 475 - Computational Complexity
3 Semester Hours

Introduction to the study of computational complexity, including efficient algorithms for matrix multiplication and fast Fourier transforms, the classes P and NP, approximation algorithms, randomized algorithms and RP, parallel algorithms and NC.

Lecture, 3 hours.
Prerequisites: CMSI 282 and 385.
CMSI 485 - Artificial Intelligence
3 Semester Hours

Introduction to the theory and applications of artificial intelligence. Topics include heuristic search theory, knowledge representation and symbolic reasoning, natural language understanding, and machine learning.

Lecture, 3 hours.
Prerequisites: CMSI 385 and 386.
CMSI 486 - Introduction to Database Systems
3 Semester Hours

Theory and design of database systems, with emphasis on relational and object-oriented models. Topics include semantic data modeling, database languages, data integrity, physical database design, normalization, indexing, query processing, transaction management, concurrency control, and object-relational mapping.

Lecture, 3 hours.
Prerequisites: CMSI 386 and 387.
CMSI 488 - Compiler Construction
4 Semester Hours

Introduction to the theory and design of translators for high-level computer programming languages. Topics include programming language specification, scanner construction, parser construction, intermediate representations, code generation, and optimization. Coursework includes implementation of a compiler.

Lecture, 3 hours.
Prerequisites: CMSI 385 and 386.
CMSI 498 - Special Studies
1-4 Semester Hours

CMSI 499 - Independent Studies
1-4 Semester Hours

CMSI 583 - Theory of Computation
3 Semester Hours

Finite automata, regular sets; context-free grammars, pushdown automata; context-free languages; Turing machines, decidable and undecidable problems; complexity, intractability, and NP-completeness.

Lecture, 3 hours.
Prerequisite: CMSI 281.
CMSI 585 - Programming Languages
3 Semester Hours

Introduction to the principles of programming language design and implementation via a comparative study of several major languages. Topics include syntactic and semantic specification, bindings, control fl ow, types, subroutines, modules, objects, and concurrency. Major attention is given to C/C++, Java, ML, Perl, and JavaScript.

Prerequisites: CMSI 284 and 386.
CMSI 587 - Operating Systems
3 Semester Hours

Topics in the design of operating systems with emphasis on large-scale multiprocessing, multiprogramming, and distributed environments. Topics include process scheduling, interprocess communication, I/O management, virtual memory management, file systems, and network, distributed, and realtime operating systems.

Prerequisite: CMSI 284.
CMSI 588 - Compiler Construction
3 Semester Hours

Topics in the theory and design of compilers and interpreters for high-level programming languages, including scanners and scannergenerators, context-free grammars and pushdown automata, parser construction, code generation, syntax-directed translation, error analysis and recovery, and optimization and data-fl ow analysis.

Lecture, 3 hours.
Prerequisites: CMSI 583 and 585.
CMSI 598 - Special Studies
1-4 Semester Hours

CMSI 599 - Independent Studies
1-4 Semester Hours

CMSI 601 - Graduate Seminar
3 Semester Hours

Project-based seminar in which students will be required to select, research, write about, and discuss some aspect of a broad area of current interest to computer scientists and electrical engineers (e.g., computer networks, digital communication).

Prerequisites: Successful completion of coursework and the endorsement of the faculty advisor. (The seminar can be taken during the final semester of coursework subject to the approval of the faculty advisor.)
CMSI 641 - Software Engineering
3 Semester Hours

Design and development issues of large-scale software systems which are reliable and easily maintainable. Course project covers each step of the development process from the initial needs analysis and requirement specifi cation through design and implementation. Topics include tradeoffs between agile and traditional approaches, impact of legacy systems,
architectural representation issues, testing, project risk management, and emerging trends in software engineering such as model-driven engineering and aspect-oriented software development.

Prerequisites: CMSI 585 and 587.
CMSI 655 - Internet Technologies
3 Semester Hours

Study of the basic architecture, protocols and services of the global Internet. Topics include: internetworking principles, the TCP/IP protocol suite, socket-level programming, DNS, MIME, HTTP, FTP, and POP; XML technologies; web programming with XHTML, CSS, JavaScript and web server extensions; the design of databasebacked systems, middleware, scalability and security.

Prerequisite: CMSI 585.
CMSI 670 - Interaction Design
3 Semester Hours

Interaction design and human-computer interaction, with equal emphasis on learning how to design and evaluate interaction architectures and learning how to survey and analyze current literature on the subject to implement such architectures. Topics include: interaction guidelines, principles, and theories; usability engineering; the modelview-
controller (MVC) paradigm; and current research in the field.
CMSI 671 - Computer Graphics
3 Semester Hours

Topics in computer graphics, including: raster display systems, interactive computer graphics, object modeling, transformations, synthetic image generation, animation, image processing, and shaders with examples from OpenGL.

Prerequisite: CMSI 281.
CMSI 673 - Distributed and Concurrent Programming
3 Semester Hours

Study of paradigms and languages for concurrent and distributed computing. Topics include concurrent programming foundations; Win32 processes and threads; Java threads, networking and RMI; real-time and distributed systems; remoting; Java EE and .NET.

Prerequisite: CMSI 284.
CMSI 674 - Topics in Operating Systems
3 Semester Hours

Topics include concepts and design issues in distributed operating systems and UNIX implementation.

Prerequisite: CMSI 587.
CMSI 675 - Declarative Programming Languages
3 Semester Hours

A survey of theoretical foundations and computer languages for functional and logic programming, with examples from LISP, Scheme, Haskell, ML, SQL, and Prolog.

Prerequisite: CMSI 585.
CMSI 677 - Artificial Intelligence
3 Semester Hours

Study of artificial intelligence. Topics include: problem solving methods; heuristic search and game playing; knowledge representation, frames, inheritance and common-sense reasoning; neural nets and genetic algorithms; and machine learning.

Prerequisites: CMSI 385 and 386.
CMSI 682 - Knowledge-Based Systems
3 Semester Hours

Detailed study of design and implementation of knowledge-based systems. Topics include: logic and theorem proving; deduction systems; reaction systems; forward and backward chaining; knowledge acquisition; and explanatory interfaces.
CMSI 685 - Natural Language Processing
3 Semester Hours

Role of syntax, semantics and pragmatics in human language processing by computers. Topics include: natural language generators and parsers; inference, conceptual analysis; and discourse processing.

Consent of instructor required.
CMSI 686 - Database Systems
3 Semester Hours

Fundamental concepts in the fi eld of database technology. Topics include: database system structure, semantic data modeling, relational and object-oriented databases, query languages, integrity and security, physical database design,
crash recovery, and concurrency.

Prerequisite: CMSI 387 or 587.
CMSI 687 - Topics in Theoretical Computer Science
3 Semester Hours

Topics from: Computational complexity; theory of formal languages; program schemes, recursion schemes; discrete developmental systems.

This course may be repeated for credit.
Consent of instructor required.
Prerequisite: CMSI 583.
CMSI 688 - Object Technologies
3 Semester Hours

Study of object-oriented philosophy and its applications in software architecture and programming languages. Topics include: objectoriented design, abstraction, inheritance, polymorphism, component models and design patterns.

Prerequisite: CMSI 585 or equivalent.
CMSI 689 - Computer Networks
3 Semester Hours

Concepts in and design of large-scale distributed networks and local area networks, including topologies, standards and protocols.

(See ELEC 687)
CMSI 698 - Special Studies
1-3 Semester Hours

CMSI 699 - Independent Studies
1-3 Semester Hours