Course Topics

CS 150 Introduction to Computer Science I
An introduction to computer science emphasizing problem solving. Problems are selected from a variety of interesting areas such as graphics, image processing, cryptography, data analysis, astronomy, video games, and environmental simulation. Topics include algorithm design and object oriented programming.

CS 151 Introduction to Computer Science II
A continuation of the ideas presented in 150 with particular emphasis on data structures. Implementation of abstract data types such as stack, queue, tree, and graph as well as important algorithms. Analysis of sorting and searching algorithms. Recursion.

CS 241 Computer Architecture
An introduction to fundamental ideas of computer architecture and operating systems: digital logic, data representations, CPU, architecture, machine and assembly language, memory design, and bus organization.

CS 239 ST:Android Development
In this special topics course we will study Android Development using the Java programming language. Students will be introduced to developing Android apps. The goal of the course is to teach students how to set up a development environment, what they need to do to learn a new Application Programming Interface, and how to develop and test mobile applications.

CS 243 Database Management Systems
Principles of database management systems and database design. This course takes a top-down, bottom-up approach to database management systems. In the first part of the course, key topics include data modeling, query planning, and query writing. In the second part of the course, we take a bottom-up look at the implementation of a database management system. Topics in the second part of the course include disk and file management, transaction and processing, meta-data management, query planning and implementation, parsing queries, indexing, and query optimization.

CS 251 Programming Languages
A comparison of the structure, design, and applications of various programming languages. Topics include history, language definition, formal models of syntax and semantics, data types and structures, data abstraction, control structures, data flow, and runtime considerations. Languages will be discussed in a logical organization based upon the major paradigms including imperative, logic, functional, and object oriented. Examples from classic and contemporary languages.

CS 341 Computer Networks
Concepts, principles, protocols, and applications of computer networks with a focus on the Internet. Application layer protocols such as http, smtp. Socket programming and peer-to-peer networks. Transport-layer protocols such as TCP, UDP and congestion control. Network layer algorithms for routing and broadcast, and multicast. Link-level protocols for local area networks such as Ethernet and WiFi. Issues in network privacy and security.

CS 351 Advanced Data Structures and Algorithms
Balanced tree structures, including B-trees. Hashing techniques, including expandable hash files. External sorting algorithms. Memory management algorithms. File design and file processing. Emphasis on algorithm analysis and design; algorithms drawn from a variety of applications.

CS 361 Artificial Intelligence
Artificial intelligence problems and solution techniques. Problem spaces, graph and tree traversals, heuristic search. Knowledge representation methodologies, knowledge engineering, and expert systems. Philosophical and social issues.

CS 363 Computer Graphics
An introduction to computer graphics, with an emphasis on applications programming. A commonly used application programming interface (API) is used to study geometric transformations, parallel and perspective projections, hidden surface removal, light sources, shading, and reflection. Students will write programs using the API and a high level programming-language.

CS 441 Operating Systems
A study of operating system structures and algorithms emphasizing multiple user systems, CPU scheduling in a multi-tasking environment, concurrency and parallel computing concepts including communication and synchronization issues, storage management, and protection and security.