Holy Cross HomeSearchSite IndexDirectionsWeb ServicesCalendar
About HCAdmissionsAcademicsAdministrationAlumni and FriendsAthleticsLibrary


Mathematics and Computer Science Homepage

Faculty Information

Program and Advisory Information

Math-CS Club

Department News

Computer Science Course Descriptions


These course descriptions are also available in .pdf format from the college course catalog (Adobe Acrobat Reader required). We make every effort to keep these descriptions up to date, but the final authority on college and departmental policy is the College Catalog. The Catalog should always be consulted when planning your curriculum.
Non-Major Course    Introductory Courses    Required Core Courses    Elective Courses

[Top]


Introductory and Non-Major Course

Computer Science 110 -- Survey of Computer Science - Fall, Spring

This course is a survey of the science and art of computing intended for students not majoring in mathematics or science. Half of the course is an introduction to computer programming using a high level programming language. Emphasis is placed upon language-independent topics such as structured programming, good programming style, the use of subprograms, and algorithm construction in general. The other half of the course explores how computers are built, how they operate, and what their fundamental limitations are. A portion of the course may be devoted to technical and ethical risks, problems, and disasters. Common Area Satisfied: Mathematical Sciences. One unit.

[Top]


Introductory Courses for the Major and Minor

Computer Science 131 -- Techniques of Programming - Fall

An intensive introduction to object-oriented programming in a high-level language for students considering further course work in computing or students majoring in mathematics, the sciences, economics or any other field in which computing plays a role. It is expected that most of the class will continue with CSCI 132, Data Structures. There is a required weekly lab meeting of this course. Common Area Satisfied: Mathematical Sciences. One and one-quarter units.

Note: Computer Science 131 fulfills the 3-2 Engineering Program computer science requirement.


Computer Science 132 -- Data Structures - Spring

Standard data structures such as stacks, lists, trees, and graphs are introduced. Algorithms and techniques for sorting, searching, graph traversal, hashing, and recursion are discussed. Analysis of algorithms and special topics are covered as time allows. There is a required weekly lab meeting of this course. Prerequisite: Computer Science 131, or equivalent. One and one-quarter units.


Computer Science 135 -- Discrete Structures - Spring

An introduction to the discrete mathematical structures that form the basis of computer science. Topics of study include proof techniques, relations and functions, set theory, Boolean algebra and propositional logic, predicate calculus, graphs, trees, induction and recursion, counting techniques and discrete probability. It is recommended this class be taken concurrently with CSCI 132. Common Area Satisfied: Mathematical Sciences. One unit.

[Top]


Core Required Courses for the Major

Computer Science 226 -- Computer Systems and Organization - Fall

This course covers fundamental topics related to the design and operation of a modern computing system. Relationships are drawn between circuits and system software. Topics include hardware and software organization, virtual machines, physical fundamentals of transistors, digital logic design, memory system organization, architecture and management, CPU design, multiprocessors, data representation, machine language, microprogramming, assembly language, assemblers and linkers, CISC versus RISC, interrupts and asynchronous event handling, networking, and the past and present of computer system design, architecture, and organization. Prerequisite: Computer Science 132. One unit.


Computer Science 235 -- Analysis of Algorithms Alternate Years, Fall

This course provides an introduction to the design and analysis of fundamental algorithms and their complexity. We will present several algorithm design strategies that build on the data structures and programming techniques introduced in Data Structures (CSCI 132). The general techniques covered will include: Divide-and-conquer algorithms, dynamic programming, greediness and probabilistic algorithms. The topics will include: sorting, searching, graph algorithms, O-notation, and introduction to the classes P and NP, and NP-completeness. Prerequisite: Computer Science 132 and Calculus or permission of the instructor. One unit.


Computer Science 324 -- Programming Languages Design and Implementation - Spring

Principles for designing and implementing programming languages are presented as well as styles and features that encourage and discourage the writing of good software. Specific topics include language syntax and semantics, comparison of language features and their implementation, methods of processing a program, establishing the run-time environment of the program and the major programming language paradigms (the imperative/procedural, functional/applicative, declarative/logic and object-oriented paradigms). Prerequisite: Computer Science 226. One unit.


Computer Science 328 -- Ethical Issues in Computer Science Seminar - Alternate Years, Fall

This course will examine the ethical issues that arise as a result of increasing use of computers, and the responsibilities of those who work with computers, either as computer science professionals or end users. The course will stress the ways in which computers challenge traditional ethical and philosophical concepts, and raise old issues in a new way. Students will be expected to: read and understand the ideas in the readings; explain the ideas; analyze issues and see them from diverse perspectives; and formulate and critique arguments. The readings will include technical issues in computer science and may focus on a particular area such as software design as well as more traditional topics such as philosophical theories (e.g. ethical relativism, utilitarianism, deontological theories, rights and virtue ethics), privacy, intellectual property rights and proprietary software, security, accountability, liability, the digital divide, hacking, and viruses.
There are several course goals: (1) to give a fuller, richer, deeper understanding of the social impact of computers and the ethical issues in human activities affected by computers, (2) to prepare the student for living in a computerized world and perhaps working as a professional in the computing field, and (3) to improve presentation, debating and writing skills. Prerequisite: Computer Science 132 and Calculus or permission of the instructor. One unit.

[Top]


Elective Courses for the Major

Computer Science 343 -- Computer Graphics - Alternate years

This course offers a survey of topics in computer graphics with an emphasis on fundamental techniques and the theory underlying those techniques. Topics include the fundamentals of two and three dimensional graphics such as clipping, windowing, and coordinate transformations (e.g., positioning of objects and camera), raster graphics techniques such as line drawing and filling algorithms, hidden surface removal, shading, color, curves and surfaces and animation. Students learn how to program graphics displays using a state of the art computer graphics package. Prerequisite: Computer Science 132 and Calculus or permission of the instructor. One unit.


Computer Science 345 -- Theory of Computation - Alternate years

Basic aspects of regular, context-free, context sensitive and unrestricted grammars, propositional and predicate calculus, recursive functions, automata theory and computational complexity. Prerequisite: Computer Science 132. One unit.


Computer Science 346 -- Operating Systems - Alternate years

Provides an introduction to the general model of operating systems principles and current implementation techniques. The principles and mechanisms that underlie operating systems services will be covered. Students will learn techniques for managing hardware resources and sharing them among many competing processes and threads. They will study the internal structures needed for process and thread management, synchronization, inter-process communication, memory management (including shared memory), file system management, distributed systems principles, device control, and security.
Prerequisite: Computer Science 226. One unit.


Computer Science 363 -- Computational Vision - Alternate years

This course offers an introduction to the algorithms underlying machine and biological visual systems. It examines the processes involved in converting a 2-dimensional image to a 3-D representation of the physical world. Computational models of visual processing will be compared to physiological and psychophysical results from human and other biological visual systems. The topics covered include: edge detection, stereopsis, motion computation, shape from shading, color and object recognition.
Prerequisite: Computer Science 132 and Calculus, or permission of the instructor. One unit.


Computer Science 364 -- Compiler Construction - Alternate years

The theories, tools and techniques for translator creation are the focus of the course. Topics include: regular expressions, grammars, finite state machines, lexical analysis, parsing, linguistic approaches to problem solving, intermediate code trees, register allocation, code generation, a variety of optimization schemes and techniques as well as Unix support for translation such as lex and yacc. An essential and distinguishing feature of the course is the project requirement. Students are required to build a working compiler that is a large software engineering project of significant complexity. This course carries the project course designation. Prerequisite: Computer Science 324 or permission of the instructor. One unit.


Computer Science 399 -- Topics in Computer Science - Alternate Years

This course gives the student a chance to see the principles introduced in earlier courses applied in specific areas and it gives faculty an opportunity to teach material of special interest to them. The most likely topics are artificial intelligence, database systems, advanced theory of computation, and robotics. Prerequisite: Varies by topic. One unit.


Computer Science 400 -- Directed Reading - Fall, Spring

This is an independent reading project for upper division students. Normally this will be on a topic that is not covered by the regular course offerings. Permission of the instructor and/or Department Chair is required for this course. One unit.


Computer Science 495, 496 -- Computer Science Honors Thesis - Annually

This is a large project extending over the course of the fourth year. It can consist of original research or be of an expository nature and is written under the guidance of one or more members of the department. Ordinarily the thesis will be a full year requirement. Students must complete all regular course requirements for the Computer Science Major. In addition, for High Honors, students must take six courses numbered above 300 and complete a fourth year honors thesis. The average GPA for courses in computer science must be at least 3.50 at the end of the fall semester of the fourth year.

[Top]


   College of The Holy Cross   |   1 College Street, Worcester, MA 01610   |   (508) 793 2011   |   Copyright 2002   |                  email   |   webmaster@holycross.edu