Computer Science Department
Undergraduate Course Descriptions
120 Elementary Topics
121 Elementary Topics with Laboratory
131 Concepts in Computer Science
141 Introduction to Computer Science
146 Reasoning under Uncertainty
150W Freshman Seminar
241 Data Structures
243 Discrete Structures of Computer Science
301 Software Development.
303 Algorithms
304 Computer Organization
312 Principles of Programming Languages
315 Systems Programming
321 Database Systems
412 Web Programming
420 Special Topics in Computer Science
423 Finite Automata and Theory of Computation
424 Computer Architecture
426 Simulation
427 Computer Graphics
430 Computer Languages
434 Network Systems and Design
435 Software Engineering
442 Compiler Construction
444 Principles of Operating System
495-496 Honors
498 Internship
120. Elementary Topics.
- Fall or Spring (1, 2, or 3 credits, depending on material).
A treatment of elementary topics not covered in existing courses. Course material, chosen from variaous areas of computer science, will be described and prerequisites/corequisites will appear in appropriate registration bulletins. (Top)121. Elementary Topics with Laboratory.
- Fall or Spring (1, 2, or 3 credits, depending on material).
A treatement of elementary topics not covered in existing courses. Course material, chosen from variaous areas of computer science, will be described and prerequisites/corequisites will appear in appropriate registration bulletins. Scheduled weekly two-hour laboratory sessions account for one of the credit hours assigned to this course. (Top)131. Concepts in Computer Science.
- Fall and Spring (3). Corequisite: CSci 131L.
An overview of computer science, presenting an introduction to key issues and concepts: elementary computer organization and arithmetic, algorithms, program translation, operating systems, elementary data structures, file systems, and database structures. Required laboratory sessions introduce students to application software for data management, text processing and programming. Not open to students who have received credit for any 300-400 level computer science course. Two Lecture hours, two laboratory hours. Some majors require their students to satisfy the Major Computing Requirement by taking a computer science course designated for that purpose. CSCI 131 is designated for that purpose. (Top)141. Introduction to Computer Science.
- Fall and Spring (4). Corequisite: CSci 141L.
Fundamental concepts of computer science, including problem solving, algorithm development, data structures, and characteristics and organization of computers. Programming in a higher level language, debugging, and fundamentals of programming style. Three class hours, two laboratory hours. (Top)146. Reasoning under Uncertainty.
- (GER 1) Prerequisite: CSCI 141 (Not offered 2005-06)
A computationally-oriented exploration of quanitative reasoning for situations in which complete information is not available. Topics will include an introduction to discrete probability theory, Monte Carlo simulation, sampling theory, and elementary game theory. (Top)150W. Freshman Seminar.
- Fall or Spring (4).
A course designed to introduce freshman to the study of issues related to the use of computing technology. Satisfies the lower-level writing requirement. (Top)241. Data Structures.
- Fall and Spring (3). Prerequisite: CSCI 141.
Continuation of fundamental concepts of computer science: data abstraction, data structures, and data representation. Lists, tacks, queues, trees, balanced trees, priority queues, hashing, and applications. The implementation of abstract data structures using classes gives this course a significant programming component. (Top)243. Discrete Structures of Computer Science.
- Fall and Spring (3). Prerequisite: CSCI 141.
Theoretical foundations of computer science, including sets, functions, boolean algebra, first order predicate calculus, trees, graphs, and discrete probability. (Top)301. Software Development.
- Fall (3). Prerequisites: CSCI 241.
An introduction to principled software development, emphasizing design at the module level as well as tools and techniques. Topics include object-oriented class design and implementation, abstraction techniques, debugging techniques, defensive programming, development and analysis tools, and testing. Emphasizes the role of the individual programmer in large software development projects.303. Algorithms.
- Spring (3). Prerequisites: CSCI 241 and CSCI 243.
A systematic study of algorithms and their complexity, including searching, sorting, selecting, and algorithms for graphs. A survey of algorithm design methods, including greedy algorithms, divide-and-conquer, dynamic programming, and back-tracking. An introduction to NP-complete problems. (Top)304. Computer Organization.
- Fall and Spring (3). Prerequisite: CSCI 241 and CSCI 243.
Organization of computer hardware and software; virtual machines, computer systems organization, machine language, assembler language, and microprogramming. (Top)312. Principles of Programming Languages.
- Fall and Spring (3). Prerequisite: CSCI 241 and CSCI 243.
A study of programming language principles and paradigms. Formal syntax, including grammars, and semantics. Paradigms, including: imperative, object oriented, functional, logic, event-driven, and concurrent. Run-time implementation issues, including: memory management, parameter passing, and event handling. (Top)315. Systems Programming.
- Spring (3). Prerequisite: CSCI 304.
The design and implementation of programs which provide robust and efficient services to users of a computer. Macro processors; scripting languages; graphical interfaces; network programming. Unix and X are emphasized. (Top)321. Database Systems.
- Fall (3). Prerequisites: CSCI 301, CSCI 303, CSCI 304.
Design, organization and implementation of database management systems: file organization and processing, hierarchical, network, and relational models of database structure, data definition and data manipulation languages, security and integrity of databases, and the study of existing database implementations. (Top)412. Web Programming.
- Spring (3). Prerequisites: CSCI 312, CSCI 321.
Overview of the Internet. Markup languages: HTML, CSS, XML. Server-side programming languages: Perl/Python, PHP, Java. Other topics include: N-tier programming, security, database access, XML processing. (Top)420. Special Topics in Computer Science.
- Fall or Spring (1, 2, or 3 credits, depending on material).
A treatment of topics of interest not routinely covered by existing courses. Material may be chosen from various areas of computer science. A complete course description and a list of prerequisites will appear in appropriate registration bulletins. (Top)423. Finite Automata and Theory of Computation.
- Fall and Spring (3). Prequisites: CSCI 303 and Math 211.
Theory of sequential machines, finite automata, Turing machines, recursive functions, computability of functions. (Top)424. Computer Architecture.
- Spring (3). Prerequisite: CSCI 304.
An introduction to the principles of computer design. Topics include data representation, including adders, signed integer arithmetic, floating point representation and character representation. A study of microprocessor, minicomputer and mainframe architecture including clocks, memory management, bus communication, and input/output. (Top)426. Simulation.
- Fall (3). Prerequisites: CSCI 301, CSCI 303 and Math 112.
Introduction to simulation. Discrete and continuous stochastic models, random number generation, elementary statistics, simulation of queueing and inventory systems, discrete event simulation, point and interval parameter estimation. (Top)427. Computer Graphics
- Fall (3). Prerequisites: CSCI 301, CSCI 303 and Math 211 (Not offered 2005-06).
Introduction to computer graphics and its applications. Topics include coordinate systems, the relationship between continuous objects and discrete displays, fill and flood algorithms, two-dimensional geometric transformations, clipping, zooming, panning, and windowing. Topics from three-dimensional graphics include representations for objects, geometric and projection transformations, geometric modeling, and hidden line/surface removal algorithms. (Top)430. Computer Languages.
- Fall or Spring (1, 2, or 3 credits, depending on language; Pass/Fail only). Prerequisite: CSCI 241.
Topics include syntax, semantics and pragmatics of one computer language as well as the influence of the language's intended areas of applications on its design. The language studied will vary and students may repeat the course for different languages. This course does not count toward satisfying the major requirements or the major GPA. (Top)434. Network Systems and Design.
- Spring (3). Prerequisites: CSCI 301, CSCI 315.
The Internet; principles and design of network applications, includeing web servers and multimedia; transport, network and data link layersl; network security; network performance evaluation and capacity planning. (Top)435. Software Engineering.
- Spring (3). Prerequisite: CSCI 312.
The software life cycle. Software design methodologies. Testing and maintenance. Programming teams. (Top)442. Compiler Construction.
- Spring (3). Prerequisites: CSCI 301, CSCI 304, and CSCI 312.
The emphasis in this course is on the construction of translators for programming languages. Topics include lexical analysis, block structure, grammars, parsing, program representation and run-time organization. (Top)444. Principles of Operating Systems.
- Fall (3). Prerequisite: CSCI 303, CSCI 315.
The conceptual view of an operating system as a collection of concurrent processes; semaphores, monitors and rendezvous. Real and virtual memory organization and management, processor allocation and management, and external device management. (Top)495-496. Honors.
- Fall and Spring (3).
Students admitted to Honors Study in Computer Science will be enrolled in this course during both semesters of their senior year. The course comprises:
- supervised research in the student's area of interest;
- presentation by April 15 of an Honors Thesis; and
- satisfactory performance in a comprehensive oral examination
in the field of the student's major interest. For College provisions governing the Admission to Honors, see the college catalog section titled Honors and Special Programs. (Top)
498. Internship.
- Fall or Spring (3; Pass/Fail only).
Students wishing to receive academic credit for an internship program must request and obtain departmental approval prior to participation in the program. A student may not receive credit for this course more than once. (Top)
Copyright ©2008 · Arts & Sciences at The College of William and Mary
