This course introduces two fundamental aspects of computer science - abstraction and design - as students learn to develop programs in a high-level programming language. Students will study and implement a variety of applications, including graphics and scientific simulations. The course assumes no prior background in programming or computer science.

This course explores the three fundamental aspects of computer science - theory, abstraction, and design - as the students develop moderately complex software in a high-level programming language. It will emphasize problem solving, algorithm development, and object-oriented design and programming. The course assumes prior experience in programming.
This course continues the exploration of theory, abstraction, and design in computer science as the students develop more complex software in a high-level programming language.
An integrated approach to the study of data structures, algorithm analysis, and discrete mathematics. Topics include: induction and recursion, time and space complexity, and big-O notation, propositional logic, proof techniques, sorting, mathematical properties of data structures, including lists.
An introduction to computer organization and principles of computer
design. Topics include digital logic and digital systems, machine level
representation of data, assembly level machine organization, memory
system organization, I/O and communication, and CPU implementation.

This is an independent study offering of this course.

Software development methods for large-scale software systems. Management of software development projects. Software engineering standards. Students are expected to complete a large-scale software project.
The course covers fundamental concepts of computer networks. Topics include: OSI model; LAN/WAN architecture & design; network services and protocols such as TCP/IP, IPv6, mobile IP; DNS, ICMP, telnet, ftp, etc; distributed object systems; and collaboration technology and groupware. Students are expected to complete a project that covers the essentials of set-up, configuration and administration of multi-protocol servers and clients.
This course covers fundamental of operating systems. Topics include process management, concurrency, scheduling, device management, file systems and naming, security and protection, and distributed operating systems. Students are expected to complete a project in the administration and maintenance of operating systems.
Regular languages, finite-state automata, and regular expressions; context-free languages, context-free grammars, and push-down automata; Turing machines and recursively enumerable languages; Chomsky hierarchy; Church's thesis, decidability and the halting problem, and computability; The P and NP classes.
This course integrates core topics of the computer science body of knowledge, teamwork, and professional practices through the implementation of a large-scale project.
Introduction to basic computing fundamentals and software engineering, with emphasis on linear data structures, algorithm development and problem solving. Students are expected to complete a small scale project in this course.

NOTE: This is an independent study offering of this course.
Advanced computing fundamentals and software engineering, with emphasis on non-linear data structures and computer architecture. Students are expected to complete a medium scale project in this course.



NOTE: This is an independent study offering of this course.
This course covers advanced topics in operating system such as: distributed systems, inter-process communication, network file systems, clock synchronization, reliability and performance, as well as selected newly emergent concepts in operating systems. Students will also be introduced to current professional certification processes and standards.
Fundamental concepts of database systems; hierarchical, network, and relational database management system; data definition and manipulation languages; security and integrity; and implementation and development.
The course covers advanced website administration, advanced use of networked databases across different platforms, and automation of administrative and accounting task. Integration of cross-platform objects through use of various protocols is also examined. Students will also be introduced to current professional certification processes and standards.
Application and survey of problem-solving methods in artificial intelligence with emphasis on heuristic programming, production systems, vision, and autonomous agents.

In this course we will study game design and development as a process, emphasizing the software engineering principles required to manage the immense scale of current game development. The course will examine the application of software engineering to game development and emphasize the design, storyboarding, and team management aspects of game development. A full-scale game development project will serve as a core of the course, providing students with the opportunity to participate in the construction of the game from inception to completion. Topics for study include game design, storytelling, graphics, and network and multiplayer issues.

This is an independent study course.