Ultimately, the world cares about the creation of full applications, real systems. These systems pull techniques from the underlying disciplines. Again, the unique aspects of the target systems may require some unique solutions to the problems of trust.
CS 431: Embedded Systems
This course presents an overview of the key concepts in common embedded system applications. Embedded systems are often used in mission-critical systems, so issues of dependability and high assurance are essential. The prerequisite is CS 241 or ECE 391. Available Fall 2012.
CS 414: Multimedia Systems
Multimedia systems have challenges in trading off data volume for data timeliness. They must deal with real-time issues and so use many of the concepts presented in the underlying dependability courses. The prerequisite is CS 241 or CS 423.
CS 424: Real-Time Systems
Real-time systems are also often components of mission-critical systems, so using dependability techniques when developing such systems is key. The course presents examples of real-time computing systems; real-time scheduling and resource management algorithms; analytical and efficient validation methods; examples of real-time operating systems; temporal consistency of real-time data; and formal methods for specification of and reasoning about timing constraints. The prerequisite is CS 431. Available Fall 2012.
ECE 573: Power Systems Control
Power systems are an example of a national critical infrastructure for which issues of security and dependability are crucial. This course studies energy control center functions, state estimation and steady state security assessment techniques, economic dispatch, optimal power flow, automatic generation control, and dynamic equivalents. Prerequisite is ECE 476 and credit or concurrent registration in ECE 530.
ECE 576: Power Systems Dynamics and Stability
This course teaches detailed modeling of the synchronous machine and its controls, such as excitation system and turbine-governor dynamics; time scales and reduced order models; non-linear and linear multi-machine models; stability analysis using energy functions; and power system stabilizers.
Traditional computer engineering disciplines use aspects of security, dependability, and assessment. In some cases these disciplines augment the basic mechanisms so they more directly solve the trust problems seen in that discipline.
This course presents the basic information about network technology, including layered architectures and the OSI Reference Model; design issues and protocols in the transport, network, and data link layers; architectures and control algorithms of local-area, point-to-point, and satellite networks; standards in network access protocols; models of network interconnection; and an overview of networking and communication software. Prerequisite is CS 241 or ECE 391, and one of MATH 461, MATH 463, and ECE 313. Available Fall 2012.
ECE 435: Computer Networking Laboratory
The Computer Networking Laboratory is a hands-on companion to the CS/ECE 438 Communication Networks for Computers class. In this course students design, apply, analyze, and evaluate communication network protocols under both Linux and Windows NT operating systems. The emphasis is on identifying problems, proposing alternative solutions, implementing prototypes using available network protocols, and evaluating results. Students work in pairs on multiple programming projects per term. Prerequisite is CS 438.
CS 423: Operating Systems Design
This course teaches the organization and structure of modern operating systems and concurrent programming concepts. Specifically, it addresses topics of deadlock, virtual memory, processor scheduling, disk systems, performance, security, and protection. Prerequisite is CS 241 or ECE 391. Available Fall 2012.
CS 523: Advanced Operating Systems
The goal of this class is to study recent advances in system design and distributed systems. Topics will be chosen based on student interest and will include current hot research areas in operating systems as well as proven technologies that have significant influence in the world today.
Every few years, advances in computer design and performance cross a threshold that allows new applications. At such a threshold, operating systems change to accommodate the new applications. Today, systems are changing to accommodate ubiquitous computing, high-bandwidth networks, high-volume storage, multi- and continuous media, and inexpensive processor components. New applications are taking the form of consumer products like Web browsers, digital video and audio, Internet commerce, and virtual reality games. Prerequisites are CS 423, CS 425, and CS 433, or consent of instructor. Available Fall 2012.
CS 433 (Computer System Organization) and ECE 411 (Computer Organization and Design)
These courses introduce the student to the basic concepts in computer architecture. Topics include computer system analysis and design; organizational dependence on computations to be performed; speed and cost of parts and overall machines; instruction set design; pipeline and vector machines; and memory hierarchy design. CS 433 has a prerequisite of CS 232; ECE 411 has a prerequisite of CS 232 or ECE 390. Both courses are listed for Fall 2012.
ECE 511: Computer Architecture
This course presents advanced concepts in computer architecture. Its topics include design, management, and modeling of memory hierarchies, stack-oriented processors, associative processors, pipelined computers, and multiple processor systems, and it focuses on hardware alternatives in detail and their relation to system performance/cost. Prerequisite is ECE 411 or CS 433. Available Fall 2012.
CS 411: Database Systems
This course teaches the student about how databases operate and how to use them effectively. Since the database is at the heart of many computer systems, issues of security and dependability in database systems are crucial. Prerequisite is CS 225 or CS 400. Available Fall 2012.
CS 511: Design of Database Management Systems
This course continues beyond CS 411 to teach the internal workings of database management systems, including query interpretation, concurrency control, distribution, data buffering, and schema management. The course considers traditional database management systems and newer approaches. It presents and analyzes the course material in terms of a particular target application. Prerequisite is CS 411.
CS 427: Software Engineering I, and CS 428: Software Engineering II
This two-semester course sequence teaches the basics of good software engineering practices. The topics include software development paradigms, system engineering, function-based analysis and design, object-oriented analysis and design, project and configuration management, collaborative development models, software quality assurance, interoperability domain engineering and software reuse, and software re-engineering. The course uses team projects for hands-on exercises. CS 427 has CS 225 and CS 373 as prerequisites. CS 428 has CS 427 as a prerequisite. CS 427 is available Fall 2012.
CS 527: Topics in Software Engineering
This course follows the Software Engineering I and II courses with advanced topics in software engineering, including fault-tolerant software, software architecture, software patterns, multimedia software, and knowledge-based approaches to software engineering. The course also includes a number of case studies. Prerequisite is CS 428 or CS 429.