Computer Science Course Catalog

An introduction to several of the major ideas in the discipline of computer science. Emphasis is placed upon contributions which computer science has made to contemporary society. Topics covered include physical and logical aspects of computers, algorithms and problem solving, an introduction to programming, simple computer architecture, and additional topics central to the discipline. These topics are supplemented by laboratory exercises in which students create small programs or utilize existing programs. Recommended for students other than those intending a major or minor in the department. (F2, I.C.)

An introduction to the discipline with emphasis on algorithm design and program development. The problem solving activity of developing algorithms is heavily stressed. Other topics include computer organization, computer usage and applications, programming languages, software engineering, data structures, and operating systems. Required for the major or minor in CS. Recommended for students intending to develop or maintain software in their own area of concentration. (F2, I.C.) Prerequisite: Four years of college preparatory mathematics, including trigonometry. Students placed into Math 106 are strongly encouraged to complete it before taking CS 120.

A continuation of Computer Science I with emphasis on data and procedural abstraction. A study of basic organizations of instructions and data as realized in both hardware design and software development. Topics include encoding schemes for instructions and data, representative machine architectures, data representations in computer memory and in high-level languages. Prerequisite: CS 120.

A laboratory-oriented course in computer hardware for science, mathematics, and computer science students. Topics covered in lectures and laboratories include logic gates, Boolean algebra, combinational and sequential logic circuits, register transfer logic, microprocessors, addressing modes, programming concepts, microcomputer system configuration, and interfacing. (Also listed as Physics 217.)

Programming. An introduction to classical internal organization of computers with emphasis on low-level (machine language and assembly language) programming. Topics covered include performance measures, low-level data representations, instruction sets, implementation of data path and control, memory organization and cache, and I/O organization. Laboratory work stresses low-level algorithm implementation on RISC processors. Prerequisite: CS 121.

An examination of issues dealing with static and dynamic aggregates of data. Topics covered include logical characteristics of various data organizations, storage structures implementing structured data, design and implementation of algorithms to manipulate such storage structures, and classical applications of data structures. Representative data structures include stacks, queues, ordered trees, binary trees, and graphs. Both contiguous and linked storage implementations are considered and performance issues discussed. Prerequisite: CS 121 and Mathematics 170 (or 106-166).

A study of features of programming languages and of the methods used to specify and translate them. Topics covered include block structure, naming, procedure invocations and parameter passage, data types, data accessing, syntactic analysis, and correspondence of source language and object language constructs. Prerequisite: CS 244.

A survey of topics and methods for emulating natural intelligence using computer-based systems. representative topics include: learning, planning, natural language processing, machine vision, neural networks, genetic algorithms. Prerequisite: CS 244.

Data file organization and processing; indexed data files and indexing techniques; database design; database applications; query languages; relational databases, algebra, and calculus; client-server models and applications; database system implementation and web programming. Prerequisite: CS 120 or consent of the instructor.

C language syntax and structure. C programming techniques. Emphasis on structured design for medium to large programs. Unix operating system fundamentals including shell programming and system calls. Unix utilities for program development, text processing, and communications. Prerequisite: CS 120.

An introduction to the physical and architectural elements of communication networks. A review of network architecture and communication protocols with emphasis on the standard Internet TCP/IP and IPv6 protocols as well as LAN protocols such as Ethernet and FDDI. Discussions of tools which allow the design, measurement and operation of networks. Topics in distributed computing will include concurrency and synchronization, programming language constructs for parallel computing, and techniques such as remote procedure calls and shared memory models. Prerequisites: CS 222 and CS 244.

A survey of operating systems issues involving both hardware and software components. Topics covered include processors, interrupts, I/O devices, process management, concurrency, memory management, file systems, and system organization. Prerequisites: CS 222 and CS 244.

A project-oriented study of the ideas and techniques required to design and implement a computer-based system. Topics include project organization, interface design, documentation, and verification. Prerequisites: CS CS 222, CS 244, and CS 256.

A study of the theoretical aspects of computing. Topics covered include formal languages (regular, context-free, and context-sensitive grammars), automata (finite state machines, push-down automata, and Turing machines), limitations of the respective computational models, and unsolvable problems. Prerequisite: CS 256.

Copyright 2006