|
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
|