Computer Science Courses
Course information found here includes all permanent offerings and is updated regularly whenever Academic Senate approves changes. For historical information, see the Course Catalogs. For actual course availability in any given term, use Course Search in the Portal.
CSCI 111. Introduction to Object-Oriented Programming (1). This course is a structured approach to algorithm development and problem solving using computer programming in an object-oriented programming language such as Java. The course develops the concepts of procedural abstraction, program design, debugging, and testing in addition to teaching the standard features of a high-level computer programming language. Students will be introduced to the key concepts of object-oriented programming, including classes, inheritance, polymorphism, and interfaces. Societal issues related to computers (e.g. ethics, privacy, liability, and security) will also be discussed. (1S) Offered each semester.
CSCI 165. Web Design (.5). An introduction to the design, creation, and maintenance of web pages and websites. Students learn how to critically evaluate website quality, how to create and maintain web pages, how to design web page layout and effective site navigation, and learn about web design standards and their importance. The course includes implementation using HTML, CSS, and other basic tools for Web based construction. The course then continues with higher level tools, including page design tools, DHTML, and related tools. Some site management techniques are covered, accessibility issues and working with clients discussed. The course progresses from introductory work on web design to a culminating project, usually on a student-selected project or a site for a local community organization. Offered in even years, spring semester. Prerequisite: junior standing.
CSCI 170. General Topics in Computer Science (.25 - 1). Special topics applicable to a general audience. Course title and content vary, and the course may be repeated for credit when the title and content change. Offered occasionally. Prerequisite: varies with topic.
CSCI 175. Computer Architecture (1). The course introduces the organization of the physical components of the computer (hardware) and the interface between the hardware, specifically via the Central Processing Unit (CPU), and the programs /instructions (software) that resulted in a functioning computational machine. In addition, the course introduces a depth study of the CPU in terms of its functional sub-units (Register File, Arithmetic and Logic Unit (ALU), datapath and control, pipelining) and interconnections, as well as in terms of its interface to memory and the external world. The course includes formal study of digital logic, Instruction Set Architecture (ISA), assembly language, memory hierarchy, storage units. The course also explores alternative processor architecture and multiprocessing. Offered each fall. Prerequisite: Computer Science 111.
CSCI 204. Data Structures and Algorithms (1). Practical coverage of data structures with opportunities for software problem-solving. Covers linked-lists, skip lists, general and balanced trees, hashing, and graphs, together with algorithms and standard tools for their implementation, plus algorithms for diverse sorting methods and complexity analysis of algorithms. Students learn how to use abstractions of data structures in designing software for applied problems, to implement the details of algorithms in writing programs, and to analyze the tradeoffs in choices of data structures and algorithms. Offered each spring. Prerequisite: Computer Science 111.
CSCI 225. Computer Architecture (.5). In-depth study of the hardware constituting a modern von Neumann central processing unit (CPU) in terms of its functional subunits (registers, arithmetic and logic unit, data path and control) and their interconnections, as well as in terms of its interface to memory and the external world. Includes formal study of digital logic, instruction set architectures, advanced assembly language, and simulation and study of a CPU formed from subunits constructed using digital logic. The course also explores alternative processor architectures and multiprocessing. Offered even years, fall semester, second module. Prerequisite: Computer Science 125.
CSCI 245. Computer Networks (1). Introduces the concepts, design, and implementation of computer data communication networks, presenting both a service model and a layered-architecture model. The course examines the Internet and its services and protocols at the application, transport, network, and physical layer in terms of a client-server, socket-based model. The growth and control of the Internet and its social implications are also discussed. The principles of network, communications, and data security and integrity are presented. Offered even years, spring semester. Prerequisite: Computer Science 175.
CSCI 270. Intermediate Topics in Computer Science (.25 - 1). Selected aspects of computer science reflecting particular interests and experience of the instructor. Course title and content vary, and the course may be repeated for credit when the title and content change. Offered occasionally. Prerequisite: varies with topic.
CSCI 315. Algorithm Design and Analysis (1). The major classes of algorithms used across the diverse areas of computer science, including graph algorithms, pattern matching, graphical algorithms, parallel algorithms, encryption, and compression. General approaches to the design of algorithms, including divide-and-conquer, backtracking, dynamic programming, and transformation of problems. Further techniques for the analysis of the efficiency of algorithms. An introduction to the abstract classes of problems: P (solvable), NP and NP-Complete (solvable but intractable), and unsolvable problems. Offered in odd years, spring semester. Prerequisite: Computer Science 204 and Mathematics 160.
CSCI 335. Threads and Operating Systems (1). Overviews the basic techniques for threaded programs where multiple tasks share the computer resources as well as surveys the principles of modern operating systems. Topics covered include data races, deadlock, atomicity/mutual exclusion with implementation, communication between threads including shared memory and message passing, operating system design, hardware influences, concurrency mechanisms, threads and processes, process states and diagrams, scheduling, context states and interrupts, memory management, file systems, and examples from major contemporary operating systems. Actual threaded programming will be done. Offered in odd years, fall semester. Prerequisite: Computer Science 204.
CSCI 347. Computer Models and Languages (.5). To understand what a computer can and cannot do, we investigate different styles of languages used to program computers, study machine learning, where the computer partly programs itself, and construct abstract models of computers for a more formal analysis of their capabilities and limitations. The focus is on programming languages substantially different than the object-oriented languages students are expected to be familiar with. We investigate their capabilities and strengths, and how they are implemented. We learn the basic properties of the three main abstract classes of computers: Finite State Machines, Context-Free Grammars, and Turing Machines. We learn some problems that cannot be solved by computer, and the implications of these unsolvable problems on computer technology. Offered in even years, fall semester. Prerequisite: Computer Science 204 plus 2 additional units of computer science courses at the 200 level or above.
CSCI 365. Database Capstone I (.5). An introduction to relational database systems, including design, architecture, SQL, relational data modeling, entity-relationships, transactions, and reliability. An appropriate scripting language such as PHP will be introduced for project usage. Students will work in teams with an outside customer to design a real-world database application, including presentations oriented to the customer and colleagues. This is a liberal arts in practice course. Students will study the basis of ethical decisions, how to apply them in computer science, and the impact of the collection of large quantities of information. Offered in even years, fall semester. (CP) Prerequisite: junior standing, Computer Science 204; Computer Science 335 is recommended.
CSCI 366. Database Capstone II (.5). An introduction to information management systems, including human needs, indexing, quality issues, object-oriented model, and information representation and applications. Students will see the project begun in Database Capstone I through to completion, including testing, documentation, and customer review. Students will experience different roles in the team environment and continued presentation of work to multiple audiences. Appropriate software development tools will be learned and utilized. Students will study professional ethics and obligations. This is a liberal arts in practice course. (CP) Offered in odd years, spring semester. Prerequisite: Computer Science 365.
CSCI 370. Advanced Topics in Computer Science (.25 - 1). Selected aspects of computer science reflecting particular interests and experience of the instructor. Course title and content vary, and the course may be repeated for credit when the title and content change. Offered occasionally. Prerequisite: varies with topic.
CSCI 375. Software Engineering Capstone I (.5). Surveys the basics of modern software engineering, with a focus on the requirements, specification, and initial design of a substantial software project. Students, working in teams, develop requirement scenarios, specifications documents, and a preliminary user manual for the project. The class as a whole reviews, critiques, and approves these documents, which generally go through multiple drafts. In parallel, teams also produce preliminary architectural design options for the software, and the class compares and reviews the options presented. As a capstone course, we also look at a variety of current issues in the profession, with students researching issues of interest to them and presenting them to the class. Offered in odd years, fall semester. Prerequisite: junior standing, Computer Science 204.
CSCI 376. Software Engineering Capstone II (.5). Beginning with the software specification and design produced by Computer Science 375 the previous semester, this course focuses on the implementation of the software design into code. Objects of the software system are assigned to different teams, and teams learn the skills necessary to coordinate the construction of a larger system from the construction of the individual objects of the system. Emphasis is placed on the design of methods, programming by contract, and the use of automated testing to validate those contracts. Structured approaches to object documentation and code inspections are used regularly. Ongoing collaborative integration of the team components is achieved through formal configuration management tools. As a capstone course, we will also look at a variety of current issues in the profession, with students researching issues of interest to them and presenting them to the class. Offered in even years, spring semester. Prerequisite: junior standing, Computer Science 204; Computer Science 375 is recommended.
CSCI 390. Special Projects (.25 - 1). Individual, guided investigation of a problem or topic in computer science. Prerequisite: sophomore standing.
CSCI 395. Teaching Assistant (.25, .5). Work with faculty in classroom instruction. Graded credit/no credit.