# Computer Science Major Requirements

## 2015 - 2016 Catalog

The Computer Science department has the following degrees:

## Computer Science major leading to BA degree

A **major in computer science** leading to a Bachelor of Arts degree requires completion of at least 38 credits, including the following:

- CSCI 111, 112, 209, 210, 211
- MATH 121 or 301
- Either CSCI 312 or 313
- MATH 102 or 118 or 122
- Two courses chosen from CSCI 315 through CSCI 341
- Six additional credits in computer science.

Students expecting to major in computer science should take MATH 121 or 301 in their first or second year.

- Required courses
- CSCI 111 - Fundamentals of Programming I
FDR: FM

Credits: 4

Planned Offering: Fall, WinterA disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.

- CSCI 112 - Fundamentals of Programming II
FDR: SC

Credits: 4

Planned Offering: Fall, Winter*Prerequisite: CSCI 111.*A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course.

- CSCI 209 - Software Development
Credits: 3

Planned Offering: Fall*Prerequisite: CSCI 112.*An examination of the theories and design techniques used in software development. Topics include the software life cycle, design patterns, the Unified Modeling Language, unit testing, refactoring, rapid prototyping, and program documentation.

- CSCI 210 - Computer Organization
Credits: 3

Planned Offering: Winter*Prerequisite: CSCI 111.*Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language.

- CSCI 211 - Algorithm Design and Analysis
Credits: 3

Planned Offering: Winter*Prerequisites: CSCI 112 and MATH 121 or MATH 301.*Methods for designing efficient algorithms, including divide-and-conquer, dynamic programming, and greedy algorithms. Analysis of algorithms for correctness and estimating running time and space requirements. Topics include advanced data structures, graph theory, network flow, and computational intractability.

- Take one course:
- MATH 121 - Discrete Mathematics I
FDR: FM

Credits: 3

Planned Offering: Fall, WinterA study of concepts fundamental to the analysis of finite mathematical structures and processes. These include logic and sets, algorithms, induction, the binomial theorem, and combinatorics.

- or
- MATH 301 - Fundamental Concepts of Mathematics
Credits: 4

Planned Offering: Spring*Prerequisite: Six credits of mathematics or a grade of at least B in MATH 102.*Basic analytical tools and principles useful in mathematical investigations, from their beginning stages, in which experimentation and pattern analysis are likely to play a role, to their final stages, in which mathematical discoveries are formally proved to be correct. Strongly recommended for all prospective mathematics majors.

- Take one course
- CSCI 312 - Programming Language Design
Credits: 3

Planned Offering: Fall*Prerequisites: CSCI 112 and 210, MATH 121 or 301.*Formal language description tools, semantic concepts and syntactic constructs appropriate to diverse applications. Comparison of several high-level languages, such as Scheme, Java, ML, and PROLOG, and their implementations of these syntactic and semantic elements. Students learn the Scheme programming language and how to use it to write interpreters for other programming paradigms (object-oriented, logic-oriented, and type-inferencing).

- or
- CSCI 313 - Theory of Computation
Credits: 3

Planned Offering: Winter*Prerequisites: MATH 121 or MATH 301 or instructor consent.*A study of the principles of computer science embodied in formal languages, automata, computability, and computational complexity. Topics include context-free grammars, Turing machines, and the halting problem.

- Take one course
- MATH 102 - Calculus II
FDR: FM

Credits: 3

Planned Offering: Fall, Winter*Prerequisite: The equivalent of MATH 101 with C grade or better. Note: Students wanting to take this course should add to the waiting list when open; additional sections may be added.*A continuation of MATH 101, including techniques and applications of integration, transcendental functions, and infinite series.

- MATH 118 - Introduction to Statistics
FDR: SC

Credits: 3

Planned Offering: Winter*Prerequisite: MATH 101.*Elementary probability and counting. Mean and variance of discrete and continuous random variables. Central Limit Theorem. Confidence intervals and hypothesis tests concerning parameters of one or two normal populations.

- or
- MATH 122 - Discrete Mathematics II
FDR: SC

Credits: 3

Planned Offering: Winter 2015 and alternate years*Prerequisite: MATH 121. A continuation of MATH 121.*Applications of 121 include probability theory in finite sample spaces and properties of the binomial distribution. This course also includes relations on finite sets, equivalence classes, partial orderings, and an introduction to graph theory and enumeration.

- Two courses chosen from:
- CSCI 315 - Artificial Intelligence
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*Basic concepts of heuristic search, game playing, natural language processing, and intelligent systems, with a focus on writing programs in these areas. Course combines a discussion of philosophical issues with hands-on problem solving.

- CSCI 317 - Database Management
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*Database design with the entity-relationship model, the relational database model including normal forms and functional dependencies, SQL database query language, server-side scripting for Web access to databases. A major project to design and implement a database using a commercial package.

- CSCI 320 - Parallel Computing
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisites: CSCI 209 and 210.*A survey of parallel computing including hardware, parallel algorithms, and parallel programming. The programming projects emphasize the message-passing paradigm.

- CSCI 321 - Computer Networks
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*Intended as a first course in communication networks for upper-level students. Covers concepts and protocols underlying modern computer networks. Topics include network architecture and layering, routing and switching, the TCP/IP protocol and network applications. Theory and programming.

- CSCI 325 - Distributed Systems
Credits: 4

Planned Offering: Spring 2013 and alternate years*Prerequisite: CSCI 209 or instructor consent.*In this course, students learn to design and develop distributed systems, i.e., collections of independent networked computers that function as single coherent systems. The concepts of communication, synchronization, consistency, replication, fault tolerance, and security are covered. In addition, case studies of real-world distributed systems (e.g., the Internet, distributed file systems, grid computing) are analyzed.

- CSCI 330 - Operating Systems
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisites: CSCI 209 and 210.*Procedure initiation, environment construction, reentrancy, kernel functions, resource management, input/output, file structures, security, process control, semaphores and deadlock, and recovery procedures. The laboratory includes the opportunity to examine and modify the internals of an operating system.

- CSCI 332 - Compiler Construction
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisites: CSCI 210, 211, 312, and 313.*Lexical analysis, parsing, context dependence, translation techniques, optimization. Students are expected to produce a compiler for a suitably restricted language.

- CSCI 335 - Software Engineering through Web Applications
Credits: 4

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209 or permission of instructor.*In this course, students learn to develop high-performance software for Web applications using advanced software engineering techniques. The concepts of client-server computing, theories of usable graphical user interfaces, models for Web-based information retrieval and processing, and iterative development are covered.

- CSCI 340 - Interactive Computer Graphics
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*In this course we develop, step by step, a reasonably complete 3D computer-graphics system with the ability to generate a photo-realistic image given a specification of shapes, poses, lighting, textures, and material properties, and camera parameters and perspective. Final projects consist of using your system to produce your own computer-animated short. The necessary mathematical background is developed during the course.

- CSCI 341 - Digital Image Processing
FDR: SC

Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*A survey of topics in the acquisition, processing and analysis of digital images, with much of the necessary mathematical background developed in the course. Topics in image processing include image enhancement and restoration, compression, and registration/alignment. Topics in image analysis include classification, segmentation, and more generally statistical pattern recognition. Throughout the course, human vision and perception motivate the techniques discussed.

- Six additional credits in computer science.

## Computer Science major leading to BS degree

A **major in computer science** leading to a Bachelor of Science degree requires completion of at least 50 credits, including the following:

- CSCI 111, 112, 209, 210, 211, 312, 313; MATH 102, 222
- MATH 121 or 301
- Two courses chosen from CSCI 315 through CSCI 341
- Six additional credits in computer science
- Six additional credits in mathematics at the 200 level or above.

An additional course required as a prerequisite for completion of the above is MATH 101.

Students expecting to major in computer science should take MATH 121 or 301 in their first or second year.

- Required courses
- CSCI 111 - Fundamentals of Programming I
FDR: FM

Credits: 4

Planned Offering: Fall, WinterA disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.

- CSCI 112 - Fundamentals of Programming II
FDR: SC

Credits: 4

Planned Offering: Fall, Winter*Prerequisite: CSCI 111.*A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course.

- CSCI 209 - Software Development
Credits: 3

Planned Offering: Fall*Prerequisite: CSCI 112.*An examination of the theories and design techniques used in software development. Topics include the software life cycle, design patterns, the Unified Modeling Language, unit testing, refactoring, rapid prototyping, and program documentation.

- CSCI 210 - Computer Organization
Credits: 3

Planned Offering: Winter*Prerequisite: CSCI 111.*Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language.

- CSCI 211 - Algorithm Design and Analysis
Credits: 3

Planned Offering: Winter*Prerequisites: CSCI 112 and MATH 121 or MATH 301.*Methods for designing efficient algorithms, including divide-and-conquer, dynamic programming, and greedy algorithms. Analysis of algorithms for correctness and estimating running time and space requirements. Topics include advanced data structures, graph theory, network flow, and computational intractability.

- CSCI 312 - Programming Language Design
Credits: 3

Planned Offering: Fall*Prerequisites: CSCI 112 and 210, MATH 121 or 301.*Formal language description tools, semantic concepts and syntactic constructs appropriate to diverse applications. Comparison of several high-level languages, such as Scheme, Java, ML, and PROLOG, and their implementations of these syntactic and semantic elements. Students learn the Scheme programming language and how to use it to write interpreters for other programming paradigms (object-oriented, logic-oriented, and type-inferencing).

- CSCI 313 - Theory of Computation
Credits: 3

Planned Offering: Winter*Prerequisites: MATH 121 or MATH 301 or instructor consent.*A study of the principles of computer science embodied in formal languages, automata, computability, and computational complexity. Topics include context-free grammars, Turing machines, and the halting problem.

- MATH 102 - Calculus II
FDR: FM

Credits: 3

Planned Offering: Fall, Winter*Prerequisite: The equivalent of MATH 101 with C grade or better. Note: Students wanting to take this course should add to the waiting list when open; additional sections may be added.*A continuation of MATH 101, including techniques and applications of integration, transcendental functions, and infinite series.

- MATH 222 - Linear Algebra
Credits: 3

Planned Offering: Fall, Winter*Prerequisite: MATH 221.*Introductory linear algebra: systems of linear equations, matrices and determinants, vector spaces over the reals, linear transformations, eigenvectors, and vector geometry.

- Take one course:
- MATH 121 - Discrete Mathematics I
FDR: FM

Credits: 3

Planned Offering: Fall, WinterA study of concepts fundamental to the analysis of finite mathematical structures and processes. These include logic and sets, algorithms, induction, the binomial theorem, and combinatorics.

- MATH 301 - Fundamental Concepts of Mathematics
Credits: 4

Planned Offering: Spring*Prerequisite: Six credits of mathematics or a grade of at least B in MATH 102.*Basic analytical tools and principles useful in mathematical investigations, from their beginning stages, in which experimentation and pattern analysis are likely to play a role, to their final stages, in which mathematical discoveries are formally proved to be correct. Strongly recommended for all prospective mathematics majors.

- Two courses chosen from:
- CSCI 315 - Artificial Intelligence
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*Basic concepts of heuristic search, game playing, natural language processing, and intelligent systems, with a focus on writing programs in these areas. Course combines a discussion of philosophical issues with hands-on problem solving.

- CSCI 317 - Database Management
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*Database design with the entity-relationship model, the relational database model including normal forms and functional dependencies, SQL database query language, server-side scripting for Web access to databases. A major project to design and implement a database using a commercial package.

- CSCI 320 - Parallel Computing
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisites: CSCI 209 and 210.*A survey of parallel computing including hardware, parallel algorithms, and parallel programming. The programming projects emphasize the message-passing paradigm.

- CSCI 321 - Computer Networks
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*Intended as a first course in communication networks for upper-level students. Covers concepts and protocols underlying modern computer networks. Topics include network architecture and layering, routing and switching, the TCP/IP protocol and network applications. Theory and programming.

- CSCI 325 - Distributed Systems
Credits: 4

Planned Offering: Spring 2013 and alternate years*Prerequisite: CSCI 209 or instructor consent.*In this course, students learn to design and develop distributed systems, i.e., collections of independent networked computers that function as single coherent systems. The concepts of communication, synchronization, consistency, replication, fault tolerance, and security are covered. In addition, case studies of real-world distributed systems (e.g., the Internet, distributed file systems, grid computing) are analyzed.

- CSCI 330 - Operating Systems
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisites: CSCI 209 and 210.*Procedure initiation, environment construction, reentrancy, kernel functions, resource management, input/output, file structures, security, process control, semaphores and deadlock, and recovery procedures. The laboratory includes the opportunity to examine and modify the internals of an operating system.

- CSCI 332 - Compiler Construction
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisites: CSCI 210, 211, 312, and 313.*Lexical analysis, parsing, context dependence, translation techniques, optimization. Students are expected to produce a compiler for a suitably restricted language.

- CSCI 335 - Software Engineering through Web Applications
Credits: 4

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209 or permission of instructor.*In this course, students learn to develop high-performance software for Web applications using advanced software engineering techniques. The concepts of client-server computing, theories of usable graphical user interfaces, models for Web-based information retrieval and processing, and iterative development are covered.

- CSCI 340 - Interactive Computer Graphics
Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*In this course we develop, step by step, a reasonably complete 3D computer-graphics system with the ability to generate a photo-realistic image given a specification of shapes, poses, lighting, textures, and material properties, and camera parameters and perspective. Final projects consist of using your system to produce your own computer-animated short. The necessary mathematical background is developed during the course.

- CSCI 341 - Digital Image Processing
FDR: SC

Credits: 3

Planned Offering: Offered when interest is expressed and departmental resources permit*Prerequisite: CSCI 209.*A survey of topics in the acquisition, processing and analysis of digital images, with much of the necessary mathematical background developed in the course. Topics in image processing include image enhancement and restoration, compression, and registration/alignment. Topics in image analysis include classification, segmentation, and more generally statistical pattern recognition. Throughout the course, human vision and perception motivate the techniques discussed.

- Six additional credits in computer science.
- Six additional credits in mathematics at the 200 level or above.