Mathematics and Computer Science

Steven P. Levandosky, Ph.D., Associate Professor and Chair
 

The primary goal of the programs in mathematics and computer science at Holy Cross is to enable students to become active participants in the study of fundamental and dynamic areas of human endeavor. The inherent structure and beauty of mathematics is at the core of all mathematical inquiry. Mathematics is also the language of the sciences and social sciences, and in our increasingly technology-driven society, it is part of our daily public discourse. Computing has become an indispensable tool for scientific and mathematical experimentation. The academic discipline of computer science studies algorithms, data structures, and their realization in software and hardware systems. It addresses the fundamental questions: What is computable in principle? And what tasks are algorithmically feasible? Thus the programs in mathematics and computer science are both informed by other disciplines and seek out ways that mathematics and computing have an impact on the world at large. In this context the department works toward helping students to become knowledgeable and sophisticated learners, able to think and work independently and in concert with their peers.

The department offers a number of introductory courses, a major in mathematics, a major in computer science and a minor in computer science open to students majoring in any department, including mathematics. Computing courses do not count toward the maximum number of courses that may be taken in one department for mathematics majors, nor do mathematics courses count toward the maximum number of courses that may be taken in one department for computer science majors.  

Advanced Placement

AP Calculus: Students who have received a score of 4 or 5 on the AP Calculus AB exam will earn one unit of credit and are advised to take Mathematics 136. Students will forfeit their AP credit if they opt to take Mathematics 133 or 135.

Students who receive a score of 4 or 5 on the AP Calculus BC exam and an AB subscore of 4 or 5 will earn two units of credit and are advised to take Mathematics 241 (Multivariable Calculus). One AP credit will be lost if the student starts in Mathematics 134 or 136, and both credits will be lost if the student starts in Mathematics 133 or 135. Students who receive a score of 3 or lower on the BC exam and an AB subscore of 4 or 5 will earn one unit of credit and are advised to take Mathematics 136. Students will forfeit their AP credit if they opt to take Mathematics 133 or 135.

AP Statistics: Students who have received a score of 4 or 5 on the AP Statistics exam will earn one unit of credit. Students will forfeit their AP credit if they opt to take any 100- or 200-level statistics course at the College, including Mathematics 120, Mathematics 220 (Statistics), Biology 275, Economics 249, Psychology 200, Sociology 226.

AP Computer Science: Students who have received a score of 4 or 5 on the AP Computer Science exam will earn one unit of credit for Computer Science 131 and are advised to take Computer Science 132. Students will forfeit their AP credit if they opt to take Computer Science 110 or 131.

Introductory Courses: There are a number of introductory courses that satisfy a Common Area Requirement in Mathematical Science, including Computer Science 110, Mathematics 110, and Mathematics 120. These are recommended for students who are not considering a major in mathematics, computer science, economics, accounting, the sciences and who are not aspiring to the pre-health professions.

Calculus: Mathematics 133, Mathematics 135, Mathematics 136 and Mathematics 241 are for students who are interested in pursuing a major in mathematics, computer science, economics, accounting, the sciences, or who are aspiring to the pre-health professions. Successful completion of Mathematics 136 fulfills any college requirement for a full year of calculus.

Students considering any of these fields may need calculus and/or statistics and should consult the specific major requirements elsewhere in the catalog. Students with little or no calculus background should enroll in Mathematics 135. Students with some calculus background should enroll in either Mathematics 135 or Mathematics 136. Students who have earned advanced placement credit should follow the guidelines above. Students who have successfully completed a year of calculus in high school, but who did not take the AP exam, or who scored a 3 or lower on the AP Calculus AB exam may consider starting with Mathematics 136, but only if they feel that they were successful in a strong high school course.

The sequences Mathematics 133, 134 and Mathematics 135, 136 are alternatives to each other. Mathematics 133 is available for students who are particularly concerned about their algebra and precalculus preparation, in addition to having had no previous calculus. Only students interested in the specific fields listed above who feel they need additional class time to adjust to college mathematics should consider Mathematics 133.  Mathematics 133 and 134 meet for extra time each week and have a weekly tutorial session to provide additional support.  Enrollment is by permission only.

No student may earn credit for any two of Mathematics 133 and 135, or, similarly, for Mathematics 134 and 136. 

Statistics: Mathematics 120 is an introductory course intended for students who are not interested in pursuing mathematics, economics, biology, psychology, sociology, or the health professions. Any such students should take a 200-level statistics course instead, ideally one within their major. Statistics is a part of the health professions curriculum, but many majors at the College offer their own statistics courses that are tailored to their disciplines. Health profession students are advised to wait and take the statistics course in their major, should it offer one. Otherwise, students should take Math 220 for health professions some time after their first year at the College.

Computer Science: Computer Science 110 is intended for students not majoring in mathematics, computer science, or the sciences. Computer Science 131 is for students considering further course work in computing or students majoring in any field in which computing plays a significant role.  

The Major in Mathematics

Requirements for majors in the classes of 2017, 2018 and 2019. Majors must take at least 10 courses in mathematics above Mathematics 133 or 135. The foundation consists of Math 134 or 136 (Calculus 2), Math 241 (Multivariable Calculus), Math 242 (Principles of Analysis), Math 243 (Algebraic Structures), and Math 244 (Linear Algebra), which are required. In addition to the required courses, majors must take five elective mathematics courses numbered above 300. At least one of these must be a project course. Majors in the class of 2017 must complete at least one course from three of the following four areas: Analysis, Algebra, Geometry/Topology, Applied Mathematics/Statistics. Majors in the classes of 2018 and 2019 must complete at least two courses from the areas of Analysis, Algebra, and Geometry/Topology, plus at least one course from the area of Applied Mathematics/Statistics. The course listings that follow show which regular upper-level mathematics courses fall within each of the areas, and majors will consult with their academic advisers no later than the end of their second year to plan their major course selections with this requirement in mind.

 

Requirements for majors in the classes of 2020 and later. Majors must take at least 10 courses offered by the mathematics and computer science department. The foundation consists of Math 134 or 136 (Calculus 2), Math 241 (Multivariable Calculus), Math 243 (Algebraic Structures), and Math 244 (Linear Algebra), which are required. Majors must also take the upper-level courses Math 351 (Modern Algebra 1) and Math 361 (Real and Abstract Analysis 1). In addition to the required courses, majors must take four elective courses, at least three of which must be mathematics courses numbered above 300. Majors may take Computer Science 131, or any 200-level mathematics course numbered above 220 as one of their elective courses. At least one elective must be a project course. Math 110, Math 120, Math 133, Math 135 and Math 220 do not count toward the major.

Project Courses. In these courses, in place of a final exam, students work on a substantial project leading to a written report and an oral presentation. These projects provide majors with independent learning experiences, where students either investigate some topic using the tools and concepts studied in the course or explore mathematical topics beyond those covered in the course. Majors are encouraged to take advantage of the close student-faculty contact afforded by upper-division seminars, independent study, and departmental honors, which permit students to explore topics of mutual interest to students and faculty that are not part of the regular course offerings. Also, throughout the curriculum, in courses and in independent work, students are able to explore and utilize the growing relationship between mathematics and computing.

 

 

The Major in Computer Science

Computer Science Majors must complete a minimum of 10 one-semester courses in computer science. These include seven required core courses and at least three additional upper-level (numbered 300 or above) electives. In addition, all majors must complete the equivalent of one semester of calculus; AP credit is allowed to satisfy this requirement. Prospective computer science majors are strongly encouraged to complete the equivalent of two semesters of calculus. Advanced placement credit may be used to count toward major requirements.

The required computer science core consists of three introductory, two intermediate and two upper-level courses. The introductory core courses are Computer Science 131 (Techniques of Programming), Computer Science 132 (Data Structures) and Computer Science 135 (Discrete Structures). Mathematics 243 (Algebraic Structures) may be substituted for Discrete Structures. The intermediate core courses are Computer Science 226 (Computer Systems and Organization) and Computer Science 235 (Analysis of Algorithms). The upper-level core courses are Computer Science 324 (Programming Languages Design and Implementation) and Computer Science 328 (Ethical Issues in Computer Science).

In addition to the core courses, majors are required to take at least three elective courses numbered above 300. We strongly recommend that students take at least one upper-level course carrying the project course designation. A project course allows students to combine skills and concepts they have previously learned during their undergraduate courses with new material in a complex implementation task. The project course is often scheduled for the last year of undergraduate study, where it can serve as a capstone for the undergraduate experience.

The Minor in Computer Science

Computer Science minors must complete a minimum of 6 one-semester courses in computer science. In addition all minors must complete the equivalent of one semester of calculus. 

The required computer science courses are Computer Science 131, 132, 135 (Techniques of Programming, Data Structures, Discrete Structures), Computer Science 226 (Computer Systems and Organization), plus either two additional 300-level courses or 235 (Analysis of Algorithms) and an additional 300-level course. Mathematics 243 (Algebraic Structures) may be substituted for Discrete Structures. Advanced placement credit may be used to count toward the required courses for the minor. 

Other Information

The O’Callahan Science Library in the Swords Science Center and the College’s extensive major computing facilities are described elsewhere in the Catalog. In addition, computer science and mathematics students have the opportunity to use the Department’s PC laboratory in the lower-division mathematics courses and selected computer science courses as well as the Linux network in upper-division mathematics courses and most computer science courses.  The McBrien Student Lounge provides a space for students to socialize and study.

Students who are interested in teaching mathematics at the secondary school level and wish to undertake the College program leading to licensure, should consult with the Department Chair and with the Director of the Teacher Education Program. Students who are interested in majoring in mathematics and participating in the 3-2 Program in Engineering should consult with the director of that program and the Chair of the Department.

Mathematics Honors Program

The program has two levels of distinction, Honors and High Honors. High Honors is distinguished from Honors by the successful completion of an honors thesis. Any questions concerning the program should be directed to the Department Chair.

GPA Requirements for Honors and High Honors: The average GPA for mathematics courses above the level of Mathematics 136 must be at least 3.50 at the end of the fall semester of the fourth year.

Course Requirements for Honors and High Honors: All regular course requirements for the mathematics major. In addition, for Honors, students must take at least seven courses numbered above 300. The seven courses must include at least one course with a 300-level prerequisite. Students in the classes of 2017, 2018 and 2019 must take at least one course in each of the areas of Analysis, Algebra, Geometry/Topology, and Applied Mathematics/Statistics. Note: Exceptions to some of the course requirements for Honors may be possible.

Fourth-Year Honors Presentation: During the fourth year all Honors majors must give an oral presentation open to the department. This may be related to their course work but it is not intended to duplicate material normally in the curriculum. It may be a presentation that originated in a project course. The goal is to ensure a certain degree of mathematical literacy among the Honors majors.

Fourth-Year Honors Thesis for High Honors: This is a large project typically extending over the course of the fourth year. The thesis can either consist of original research or be of an expository nature and is written under the guidance of one or more members of the department. It will culminate in an oral presentation during the spring term of the fourth year, which will be accompanied by a written report of the year’s work. Typically, a student earns one unit in each semester of the fourth year for completion of the thesis

Computer Science Honors Program

Course Requirements for High Honors. 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. This is a large project extending over the course of the fourth year. The thesis can either consist of original research or be of an expository nature and is written under the guidance of one or more members of the department.

GPA Requirement for High Honors. 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.

Courses

Mathematics and Computer Science Courses

Mathematics Courses
Mathematics
110
Annually

Consideration of diverse subjects in mathematics. Content varies from semester to semester with specific subject matter for each course announced just prior to enrollment. Designed for non-majors who wish to study mathematics other than calculus. This is the preferred course for students interested in taking just one mathematics course at the College. One unit.

Mathematics
120
Annually

This course presents the basic concepts of statistics and data analysis in a non-technical way. Topics include graphical methods of summarizing data, descriptive statistics, and methods of statistical inference. Mathematics 120 is a terminal, introductory course intended for students who are not interested in pursuing mathematics, economics, biology, psychology, sociology, or the health professions. One unit.

Mathematics
133
Fall

A version of Mathematics 135 that is designed for students who require more class time to make the transition to college-level mathematics. See the description of Introductory Courses before choosing this course. See the description of Mathematics 135 for the course content. This course meets five hours per week. One and one-quarter units.

Mathematics
134
Spring

A version of Mathematics 136 that is designed for students who require more class time to make the transition to college-level mathematics. See the description of Mathematics 136 for the course content. This course meets five hours per week. One and one-quarter units.

Mathematics
135
Fall, spring

This is the standard version of Calculus at the College. Considers the calculus of real-valued functions of one variable for students who are planning further course work in mathematics, a major in the social or physical sciences, or the premedical program. Emphasis is placed on a conceptual understanding of the calculus, presenting material from symbolic, numerical, and graphical points of view. The concepts of limit, continuity, and derivative are developed and applied to algebraic, logarithmic, exponential and trigonometric functions. Applications of the derivative are explored. This course meets three hours per week. One unit.

Mathematics
136
Fall, spring

Considers the calculus of real-valued functions of one variable for students who are planning further course work in mathematics, a major in the social or physical sciences, or the premedical program. Emphasis is placed on a conceptual understanding of the calculus, presenting material from symbolic, numerical, and graphical points of view. Course content include the theory, evaluation, and applications of integration, sequences and series including Taylor polynomials and series, and an introduction to ordinary differential equations. This course is the prerequisite for Mathematics 241. This course meets four hours per week. One and one-quarter units.

Mathematics
220
Fall, spring

This course presents statistics intended for students aspiring to the health professions. Topics include sampling strategies and experimental design, numerical and graphical methods of describing data, basic concepts in probability, discrete and continuous probability distributions, sampling distributions, confidence intervals, hypothesis testing and simple linear regression. Statistics is a part of the health professions curriculum, but some majors at the College offer their own statistics courses that are tailored to their respective disciplines. Students majoring in mathematics, economics, biology, psychology and sociology should take the statistics course within their major. Health profession students are advised to wait and take the statistics course in their major, should it offer one. Otherwise, such students should take Math 220 sometime after their first year at the College. Prerequisite: Mathematics 133, 135, or equivalent. One unit.

Mathematics
241
Fall, spring

A study of the calculus of functions of several variables. Concerns the theory and applications of differentiation and integration of functions of several variables, vector fields, line integrals, Green’s theorem. Prerequisite: Mathematics 134, 136 or the equivalent. This course meets four hours per week. One and one-quarter units.

Mathematics
242
Fall, spring

An in-depth study of the theory of the calculus of functions of one variable. Topics include sequences, series, continuity, differentiability, the extreme value theorem, the mean value theorem, Riemann integration, and the fundamental theorem of calculus. Prerequisite: Mathematics 241 or Mathematics 243. One unit.

Mathematics
243
Fall, spring

An introduction to the primary structures in abstract algebra-groups, rings and fields-and the corresponding concept of homomorphism for each of these structures. Emphasis placed on using the language of sets, relations, equivalence relations and functions, and developing techniques of proof, including elementary logic and mathematical induction. Prerequisite: Mathematics 134, 136 or equivalent. One unit.

Mathematics
244
Fall, spring

Designed to acquaint students with the basic techniques of linear algebra. Topics include matrices, vector spaces, subspaces, linear transformations, bilinear forms, determinants, eigenvalue theory, and the finite dimensional spectral theorem. Applications and additional topics are included as time permits. Prerequisite: Mathematics 243. With permission of the Chair, it may be possible to take Mathematics 244 without Mathematics 243. One unit.

Mathematics
301
Alternate years

Centers on some area of geometry other than differential geometry. Possible topics include Euclidean and non-Euclidean geometry, projective geometry, the geometry of transformation groups, and the elementary geometry of algebraic curves. Prerequisite: Mathematics 241 and 244. Breadth area: Geometry and Topology. One unit.

Mathematics
302
Alternate years

A first course in the differential geometry of curves and surfaces for students who have completed Mathematics 241 and a semester course in linear algebra. Topics include the Frenet-Serret formulas, smooth surfaces in 3-space, fundamental forms, differentiable manifolds, vector fields, connections and a brief introduction to Riemannian geometry. Prerequisite: Mathematics 241 and 244. Breadth area: Geometry and Topology. One unit.

Mathematics
303
Alternate years

Introduction to the role of mathematics as a modeling tool, including the construction, interpretation and application of mathematical models. Applications chosen to illustrate various modeling paradigms such as deterministic, probabilistic, discrete and continuous modeling and may include population dynamics, biomedical applications, stock market analysis, and network and traffic flows. Prerequisite: Mathematics 241, Mathematics 244 and Computer Science 131.  Breadth area: Applied Mathematics. One unit.

Mathematics
304
Alternate years

Linear differential equations are studied; basic existence theorems are proved. Separation of variables, Laplace transforms, first- and second-order equation and linear systems, and topics in nonlinear systems are considered. Prerequisite: Mathematics 242 and 244. Breadth area: Applied Mathematics. One unit.

Mathematics
305
Alternate years

The fundamentals of complex analysis. Topics include the complex number system, analytic functions, the Cauchy-Riemann equations, Cauchy’s integral theorem, Cauchy’s integral formula, Taylor series, Laurent series, the calculus of residues and conformal mapping. Prerequisite: Mathematics 242. Breadth area: Analysis. One unit.

Mathematics
351
Alternate years

An in-depth study of the structure of groups, rings and fields. Depending on the instructor, applications to Galois theory, number theory, geometry, topology, physics, etc., are presented. Prerequisite: Mathematics 243 and 244. Breadth area: Algebra. One unit.

Mathematics
352
Alternate years

A continuation of Mathematics 351 exploring advanced topics and applications in modern algebra. Prerequisite: Mathematics 351. Breadth Area: Algebra. One unit.

Mathematics
353
Alternate years

Elementary number theory is concerned with properties of numbers (integers, primes, etc.) as well as patterns and relationships among certain sets of numbers. Topics will include divisibility, congruences, special types of primes, the distribution of primes throughout the integers, number-theoretic functions, quadratic residues, and continued fractions. Further study may include the RSA code, a superior encryption algorithm based on elementary number theory, and a discussion of one of the most famous problems in mathematics — Fermat’s Last Theorem — conjectured in 1630 yet unsolved until the 1990s. Prerequisites: Mathematics 242 and 244. Breadth area: Algebra. One unit.

Mathematics
357
Alternate years

A breadth-first introduction to the subject that discusses a representative sampling of combinatorial problems and general techniques for solving them, including a selection of counting techniques, techniques for existence questions, and a variety of examples. Examples may include partitions, graphs and trees, graph traversals, tournaments, graph coloring and chromatic polynomials, magic squares, Latin rectangles and squares, and combinatorial block designs. Prerequisite: Mathematics 243 and  244. Breadth area: Algebra. One unit.

Mathematics
361
Alternate years

Topological ideas are introduced through a treatment of metric space topology. After the study of open, closed, compact and connected spaces with emphasis on their behavior under continuous mappings, selected topics from functional analysis are considered. These include lim sup and lim inf, relation of uniform convergence to differentiation and integration, and the Stone Weierstrass approximation theorem. Prerequisite: Mathematics 242 and 244. Breadth area: Analysis. One unit.

Mathematics
362
Alternate years

A continuation of Mathematics 361 exploring advanced topics, including an introduction to Lebesgue-Stieltjes integration, Hilbert space and other material from linear space theory. Prerequisite: Mathematics 361. Breadth Area: Analysis. One unit.

Mathematics
363
Alternate years

Considers various aspects of topology of surfaces and solids, including orientability, the Euler number, and the fundamental group. One of the goals of the course is the topological classification of surfaces. Prerequisite: Mathematics 242 and corequisite 244. Breadth area: Geometry and Topology. One unit.

Mathematics
371
Alternate years

The numerical solution of problems using computers. Considerable time is devoted to selecting the appropriate algorithm for a given problem and analyzing the resulting numerical errors. Includes such topics as error analysis of computer arithmetic, approximation of functions, solution of equations, numerical integration, numerical solution of ordinary differential equations. Prerequisite: Mathematics 241 and 242. Breadth area: Analysis. One unit.

Mathematics
373
Alternate years

Provides an understanding of a wide spectrum of phenomena through the use of mathematical ideas, abstractions, and techniques. Topics included are partial differential equations, including the heat and wave equations, Fourier analysis, eigenvalue problems, Green’s functions. Prerequisite: Mathematics 304. Breadth area: Applied Mathematics. One unit.

Mathematics
374
Alternate years

An introduction to the theory of discrete dynamical systems. Topics include iteration of functions, graphical analysis, periodic points, stable sets, chaos, symbolic dynamics, the dynamics of functions of a complex variable and the Mandelbrot set. The major theorems will be studied along with their proofs and the computer will be used as a research tool to do experiments which motivate and illustrate the theory. Prerequisite: Mathematics 242. Breadth area: Applied Mathematics. One unit.

Mathematics
375
Fall, spring

An introduction to the theory and applications of probability. Includes both continuous and discrete distributions, conditional probability and Bayes’ Theorem, random variables and expected values, joint distributions of several random variables, functions of random variables, and the Central Limit Theorem. Prerequisite: Mathematics 241 and one of MATH 242, 243, or CSCI 135. Breadth area: Statistics (Applied for Classes of 2015, 2016, 2017). One unit.

Mathematics
376
Annually

A course in the theory and applications of statistics. Topics include maximum likelihood estimation, the sampling distributions of estimators, confidence intervals, hypothesis testing, regression analysis, and an introduction to the analysis of variance. Prerequisite: Mathematics 375. Students may not earn college credit for both Mathematics 376 and Economics 249. Breadth area: Statistics. One unit.

Mathematics
392
Annually

Provides an opportunity for individual and group investigation of topics not covered in ordinary course work. Active participation on the part of the students is normally required. Subject matter varies to suit individual students and is often related to the research activity of the professor. Examples of areas of study: Lie groups, functional analysis, complex analysis, probability theory, commutative algebra, applied mathematics, the classical groups, mathematical logic, automata and formal languages, topics in discrete modeling, and qualitative theory of differential equations. A breadth area designation will be made individually for each seminar course by the department chair, in consultation with the faculty member teaching the seminar. Breadth area depends on the subject matter. One unit each semester.

Mathematics
400
Fall, spring

An independent reading project for upper division students. Normally this is on a topic that is not covered by the regular course offerings. Permission of the instructor and the department chair is required for this course. One unit.

Mathematics
410
Fall, spring

A project course for upper division students under the direction of a faculty member. Normally the project will provide an introduction to research on a topic that is not covered by the regular course offerings. Course requirements are to be arranged in consultation with the instructor. Permission of the instructor and the department chair is required for this course. One unit.

Mathematics
495, 496
Annually

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. Normally, a student will earn one unit in the spring semester of the fourth year for successful completion of an honors thesis, unless the thesis work is done as part of the student’s participation in a departmental seminar. In that case, no extra credit is given above the credit for the seminar itself. For a particularly extensive project, and with the permission of the department chair, a student may earn one unit in each semester of the fourth year for completion of the thesis.

Computer Science Courses

Computer Science Courses
Computer Science
110
Survey of Computer Science
Annually

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. 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. One unit.

Computer Science
131
Techniques of Programming
Fall, spring

A broad introduction to fundamental concepts in computer science, with emphasis on designing and writing correct and elegant computer programs. Concepts are illustrated through examples drawn from a variety of application areas and may include graphics, digital media, scientific computing, or games. Weekly lab meetings provide supervised practice. This course is appropriate for any student interested in creating or understanding software, and students with little or no prior programming experience are welcome. Students in this course develop real-world programming skills and gain a foundation for applications in mathematics, the sciences, economics, accounting, or any other discipline in which computing plays an important role. This course also prepares students for further study in Computer Science 132, Data Structures, and it is required for both the major and the minor. One and one-quarter units.

Computer Science
132
Data Structures
Fall, spring

An introduction to techniques for storing and manipulating complex data. Students gain experience with sophisticated programs by studying frequently used data structures, including stacks, lists, trees, graphs, and hash tables, and by discussing algorithms for searching, sorting, graph traversal, and hashing. Weekly lab meetings provide supervised practice designing, implementing and using these data structures. As time allows, students also begin an introduction to analysis of algorithms by examining the space and time efficiency of data structures and related algorithms. This course is required for both the major and the minor. 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 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 Computer Science 132. One unit.

Computer Science
226
Computer Systems and Organization
Fall, spring

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. Co-requisite: Computer Science 132. One unit.

Computer Science
235
Analysis of Algorithms
Fall

Provides an introduction to the design and analysis of fundamental algorithms and their complexity. Presents several algorithm design strategies that build on the data structures and programming techniques introduced in Computer Science 132. The general techniques covered include: Divide-and-conquer algorithms, dynamic programming, greediness and probabilistic algorithms. Topics include: sorting, searching, graph algorithms, O-notation, and introduction to the classes P and NP, and NP-completeness. Prerequisite: Computer Science 132 and Calculus 1 or permission of 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. 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
Fall

Examines 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 stresses 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. Readings 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. One unit.

Computer Science
343
Computer Graphics
Alternate years

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 computer graphics package.
Prerequisite: Computer Science 132 and Calculus 1 or permission of 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

An introduction to the algorithms underlying machine and biological visual systems. 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. 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 this 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 Linux-style support for translation such as lex/flex and yacc/bison. 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 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

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 the Department Chair is required for this course. One unit.

Computer Science
410
Directed Project
Fall, spring

A project course for upper division students under the direction of a faculty member. Normally the project will provide an introduction to research on a topic that is not covered by the regular course offerings. Course requirements are to be arranged in consultation with the instructor. Permission of the instructor and the 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. A student will earn at least one unit of credit in the spring semester of the fourth year for successful completion of an honors thesis, unless the thesis work is done as part of the student’s participation in a department seminar. In that case, no extra credit is given above the credit for the seminar itself. For a particularly extensive project, and with the permission of the department chair, a student may earn one unit in each semester of the fourth year for the completion of the thesis. One unit.