ELECTIVES

 

Interested in taking a CS elective but not sure exactly what you're signing up for? Browse a listing of all the CS electives, complete with breif course descriptions and links to more information.


Title: C# Programming
Pre-/co-req: 301

C++ was a programming language expirement. One view of Java is a rationalization of C++. Is the "new kid on the block," C#, a rationalization of Jave? This course will consider the object-oriented programming language C#. From its basic structure, to how it integrates features historically found in libraries or other tools including event-driven programming, networking, database management, and web programming.

Further Information

Back to top


Title: Object-oriented Programming
Pre-/co-req: 302

This course surveys major concepts in object-oriented programming including encapsulation, information hiding, inheritance, delegation, and polymorphism. It covers these ideas first in Smalltalk, then spend the majority of class time on object-oriented analysis and design, before finally considering modern object-oriented programming languages such as C++/Java/C#. The course will also consider UML, patterns, and strategies. This is an undergraduate version of the graduate by the same name (see the URL for details).

Further Information

Back to top


Title: Distributed Systems
Pre-/co-req: 466

Traditional operating systems deals with coordinating the activiteis and sharing resources on a single computer. Distributed System deals with coordinating the activities of a collection of heterogeneous computers distributed over a potentially large geography area. This is the ultimate goal of the internet, which, at present, is dominated by "every computer for itself" and not well considered shared resources. This course is a group project simulation of a distributed system.

Back to top


Title: Compiler Construction
Pre-/co-req: 302

A compiler is a large piece of software that translates high-level programming language (for example Java) into machine code. The compiler construction course deals with the task of writing a compiler for a subset of high-level language. A traditional compiler has four parts: a lexical analyzer, a parser, an optimizer, and a code generator. The first two are often generated by tools that take regular language or context-free language descriptions of the language to be translated (lex and yacc are two common tools). The latter of the two are often coded in C or the language of translation! Compilers will be built in teams.

Further Information

Back to top


Title: Linux Kernel Programming
Pre-/co-req: 302

This course looks at linux kernel programming. It includes making direct system calls to the linux kernel and come time spent "under the hood" looking at how the linux kernel is implemented. This is the undergraduate version of the graduate advanced operating systems course (see the details URL).

Further Information

Back to top


Title: Computer Architecture
Pre-/co-req: 371

This course picks up the study of computer hardware where CS371 leaves off. Modern processors are pipelined, multi scalar, and clock-less. The course will study the construction of modern processor including these modern hardware building techniques. (Do to the lack of a fabrication plant, we will not actually build rivals to the Pentium.

Back to top


Title: Software Testing
Pre-req: 482

Techniques for evaluating software and verifying that software conforms to its requirements: static and dynamic analysis, theoretical foundations, and formal proofs; error, fault, and failure classification; test planning; software quality assurance; metrics; consistency.

Back to top


Title: Special Topics: Principles of Information Retrieval
Pre-req: 302

Searching for data on the Web and in specialized databases is quickly becoming a nightmare. With so much data available on-line, the user is faced with the task of locating a few relevant data items from an available set of data. Information retrieval is the branch of computer science focused on all aspects of information storage, retrieval and dissemination, including research strategies, output schemes and system evaluations. To efficiently process data and extract information, new systems are being developed that utilize the newest capabilities of computing such as distributed computing, natural language processing, and data mining, as well as traditional Boolean algebra and query processing. This course will provide an overview of IR and an introduction to the algorithms and storage techniques used by modern IR systems.

Further Information

Back to top


Title: Database Management Systems
Pre-req: 302 or equivelant

Concepts and structures necessary to design, implement, and use a database management system: logical and physical organizations; heirarchical, network, relational, and objectoriented models with emphasis on the relational model; data description languages; query facilities. Experience with micorcomputer database systems.

Back to top


Title: Software Maintenance and Evolution
Pre-req: Software Engineering

Software maintenance, also known as software evolution, is the implementation of consistent changes to an existing system. This difficult task is compounded both by the pressing business constraints which lead to the required change and the inherent difficulty of safely modifying complex systems. This class will examine both the process under which software is changed (eg. configuration control) and modern techniques for reducing the engineer's effort when making changes (eg. comprehension strategies, consistent change principles, ripple analysis, regression test effort).

Back to top


Title: CS 486 Computer Graphics
Pre-req: CS 262, MA 301

An introduction to the Mathematics and algorithms required to create two- and three-dimensional computer images. Covers the modeling and display of objects, scenes, and lighting in high-level computer language. The course emphasizes how to write a complete program for modeling and displaying a three-dimensional scene as you might find in a computer game or animated video. Currently uses Java and OpenGL as the foundation, with use of complete rendering tools like POV-Ray.

Back to top


Title: CS 455 User Interface Design and Implementation
Pre-req: CS 301

Covers the design, implementation, and evaluation of graphical user interfaces for computer applications. Topics include the human factors that direct interface design; existing standards for human/computer interaction; event-driven programming in a modern GUI system; and techniques for testing user interface effectiveness. Projects in the class involved designing user interfaces, testing interfaces for ease and efficiency of use with standard protocols, and writing GUI programs in JAVA.

Back to top


Title: CS 468 Image Processing
Pre-req: CS 301 or EG 433, MA 301

Image formation, two-dimensional signal processing, image encoding, restoration and enhancement, two- and three-dimensional pattern recognition, and robotic vision. This course is about how to design algorithms for robot vision. The class covers how to relate the physics of light to the algorithms required to recover data from images. The class has a series of labs in which students take images using scientific grade video cameras and process the images with existing software and with programs they write.

Back to top


Title: CS 456 Web Programming
Pre-req: CS 202

Programming in HTML, Perl, PHP, and JavaScript. Development of programs and scripts for Web server applications. The design of CGI scripts and the use of Perl programming language for processing Web user input. The use of SQL databases to store and retrieve data used in PHP scripts. JavaScript will be used to enhance Web pages by making them interactive and dynamic.

Back to top


Title: CS 484 Artificial Intelligence
Pre-req: CS 302

Artificial Intelligence attempts to understand entities by constructing them. This course will survey approaches scientists have taken to build intelligent systems, and will focus on one particular cutting edge approach known as "reinforcement learning." The reinforcement learning approach to AI emphasizes learning goals by creating adaptive systems that have desires and an environment where the system can be rewarded and punished.

Back to top


Title: CS 489 Topics in Computer Science: Computer Security

This course will consider different aspects of computer security. Computer Security topics include network security, internet security, local host security, firewalls, secure code construction, data-case security, encryption, and security auditing.

Back to top