Computer Science

View Computer Science Department web site

The computer science major is designed to prepare students for graduate work in computer science and for a variety of careers in computer science-related fields in government, business, or industry.

All students are expected to learn methods and techniques of problem solving, to develop a facility in the expression of problem solutions as computer algorithms and programs, and to become acquainted with the major areas of current interest and importance in computer science.

The computer science minor is designed for all interested students, but it is particularly suited for students majoring in mathematics, any of the sciences, economics, psychology, sociology or various special areas such as digital imaging (in the art major), as well as for students interested in pursuing the M.A.T. Program after graduation. The minor will introduce the student to programming, algorithms, data structures and computer architecture, as well as some more advanced aspects of computer science.

DEGREE REQUIREMENTS FOR THE MAJOR

  1. General College Requirements (see “Curriculum” section).
  2. Required Courses (24 credits):
    • COSC 120: Introduction to Computer Science I
    • COSC 130: Introduction to Computer Science II
    • MATH 200: Discrete Mathematics (or MATH 281: Foundation of Mathematics)
    • COSC 201: Algorithms and Data Structures
    • COSC 230: Computer Architecture
    • COSC 251: Programming Languages
  3. Elective Courses (20 credits)
    • Five of the following courses:
      • COSC 301: Software Engineering I
      • COSC 302: Software Engineering II
      • COSC 335: Operating Systems
      • COSC 336: Computer Networks
      • COSC 338: Computer Graphics
      • COSC 370: Artificial Intelligence
      • COSC 420: Distributed and Parallel Computing
      • COSC 435: Human-Computer Interaction
      • COSC 440: Theory of Computation
      • COSC 445: Design and Analysis of Algorithms
      • COSC 450: Database Management Systems
      • COSC 460: Scientific Computing
      • COSC 480: Topics in Computer Science
  4. Capstone Experience (eight credits)In addition to the requirements above, all students must select one of the following three options as the capstone experience of their education.
    1. St. Mary's Project (eight credits)*
    2. One 400-level computer science course** and a Senior Project in Computer Science COSC 495 (four credits)
    3. Two 400-level computer science courses**
      • * The requirement may also be satisfied by completing a St. Mary's Project in another area. If a student wishes to do a project in another area, the approval of the department must be secured in advance.
      • ** Excluding COSC 499 and courses counted as elective courses.
  5. Students must earn a grade of C- or better in all courses listed in items 2, 3, and 4 above, and maintain an overall GPA of 2.0 or better in these required courses.

Admission to a graduate program in computer science may require MATH 151 (Calculus I). Certain upper-level computer science positions in government require 15 credits of mathematics (including calculus and statistics); we recommend MATH 200, MATH 151, MATH 152 (Calculus II) and MATH 221 (Intro to Statistics).

DEGREE REQUIREMENTS FOR THE MINOR

  1. Required Courses (12 credits):
    • COSC 120: Introduction to Computer Science I
    • COSC 130: Introduction to Computer Science II
    • COSC 201: Algorithms and Data Structures
  2. Elective Courses (12 credits)
    • Three of the following courses:
      • MATH 200: Discrete Mathematics (or MATH 281: Foundation of Mathematics)
      • COSC 230: Computer Architecture
      • COSC 251: Programming Languages
      • COSC 301: Software Engineering I
      • COSC 302: Software Engineering II
      • COSC 335: Operating Systems
      • COSC 336: Computer Networks
      • COSC 338: Computer Graphics
      • COSC 370: Artificial Intelligence
      • COSC 420: Distributed and Parallel Computing
      • COSC 435: Human-Computer Interaction
      • COSC 440: Theory of Computation
      • COSC 445: Design and Analysis of Algorithms
      • COSC 450: Database Management Systems
      • COSC 460: Scientific Computing
      • COSC 480: Topics in Computer Science
  3. Students must complete the required 24 credits, earn a grade of C- or better in each course taken to fulfill the minor, and maintain an overall GPA of 2.0 or better in these required courses.

FACULTY

Casey Douglas, Sandy Ganzell, Susan Goldstine, Alan Jamieson, Lindsay H. Jamieson, David Kung (department chair), Alex Meadows, Simon Read, Katherine Socha, Ivan Sterling, Cynthia Traub

COMPUTER SCIENCE COURSES(COSC)

COSC 120. Introduction to Computer Science I (4F)

This course surveys computer science and introduces object-oriented programming. A survey of the pivotal fields of computer science, including software engineering; computer networks; programming languages; algorithms; computer architecture; models of computation; operating systems. Students begin to solve simple problems using object-oriented programming. The emphasis is on implementing object-oriented designs. This course is suitable for non-majors who want an overview of computer science and to learn to solve problems with programs. COSC 120 satisfies the Core Curriculum requirement in Mathematics.

COSC 130. Introduction to Computer Science II (4S)

This course examines object-oriented design and programming in greater detail. An examination of the use of the data structures provided by language-specific libraries, and some common simple algorithms. Students learn to design and implement simple applications. The emphasis of this course is on learning good design. This course is suitable for non-majors who want to improve their ability to solve problems using programs. Prerequisite: COSC 120.

COSC 201. Algorithms and Data Structures (4F)

This course examines the representation (data structures) and manipulation (algorithms) of information. The emphasis is on choosing the most memory and/or time-efficient implementation for a particular application. Topics: common implementations of lists, sets, maps, stacks, queues, trees and graphs, and a survey of some common algorithms for processing these data structures. Students will compare implementations of the data structures commonly provided by language-specific libraries. Prerequisite: COSC 130.

COSC 230. Computer Architecture (4F)

This course studies the structure of computer hardware. Topics include models of computer hardware; instruction set architectures; simple code generation from a high-level language; machine code; simple logic design; representations of numbers and other data types; computer arithmetic; data path organization; input-output devices; control techniques (FSM and microcode); pipelines; caches; buses; virtual memory; primary secondary and tertiary storage structures. Prerequisites: COSC 130; and MATH 200 or MATH 281.

COSC 251. Programming Languages (4S) (Formerly COSC 351)

This course studies the categories and features of programming languages. An examination of one language from each group: imperative, applicative, and declarative. Topics include types and type resolution and checking; scope, visibility and binding; control structures; expression evaluation; data and behavior abstraction; parameter passing; error handling; concurrency. The course will also give an overview of lexical analysis and parsing techniques. Not open to students who have received credit for COSC 351. Prerequisite: COSC 230.

COSC 301. Software Engineering I (4F)

This course is an introduction to the discipline of software engineering. Each part of the software lifecycle is examined. The principles of software engineering are introduced, and their impact on language design and the software development process is examined. Tools suitable for supporting the various life cycle phases are introduced. Emphasis is placed on developing high-quality software as opposed to developing software quickly. Topics include requirements analysis, project planning, preliminary and detailed designs, reviews, integration strategies, testing strategies, metrics, and documentation. The course includes participation in a group project. Each project team assigns roles to team members in order to apply software engineering processes to develop and deliver a software product. Technical writing guidelines and techniques will be introduced. Course requirements include written assignments and oral presentations. Prerequisite: COSC 201 or permission of the instructor.

COSC 302. Software Engineering II (4S)

This course is a follow-up to COSC 301 (Software Engineering I) and completes the sequence by in-depth coverage of implementation and post-development issues of software engineering. A detailed view of the support of the software lifecycle and of the delivered software product is given. The course includes continuation and examination of the group project developed in the previous course. Topics include software project and configuration management, software quality assurance, software metrics, software verification and validation, change management, software reuse, and software maintenance. Course requirements include written assignments and oral presentations. Prerequisite: COSC 301.

COSC 335. Operating Systems (4AS)

This course studies the structure, function of and algorithms used in operating systems. Topics include scheduling; processes and threads; inter-process communication; memory management; file systems; protection and security; and input-output management. The course will compare the features and implementation of two current operating systems. Prerequisite: COSC 230.

COSC 336. Computer Networks (4AS)

This course is an introduction to computer networks. The theoretical concepts of networks are illustrated with current technologies. Topics include network models (ISO OSI); common network applications (SMTP, FTP, and HTTP); connection and connection-less transport protocols (TCP and UDP); routing algorithms; data-link protocols (Ethernet); error detection and correction techniques; multiple access protocols (CSMA/CD); physical transmission media (copper wire and fiber optic). Prerequisites: COSC 201 or permission of the instructor.

COSC 338. Computer Graphics (4AS)

This course is an introduction to three-dimensional computer graphics. Topics include: vector mathematics; perspective; clipping; hidden surface removal; polygon mesh rendering techniques; texture mapping; ray tracing; and animation. Prerequisite: COSC 201 or permission of the instructor.

COSC 370. Artificial Intelligence (4AS)

This course surveys artificial intelligence. Topics include symbolic processing; expert systems; machine learning; and neural networks, natural language processing, pattern matching, genetic algorithms and fuzzy logic. Not open to students who have received credit for COSC 260. Formerly COSC 260. Prerequisite: COSC 201.

COSC 391, 392. Computer Science Team Seminar I, II (1F, 1S)

Every year we field a team for two regional computer science competitions. One is held in the fall semester and one is held in the spring semester. Team members compete in a preliminary competition to represent our college. Registration, travel and lodging expenses for three of the team members and one alternate are provided. Prerequisite: Consent of the instructor.

COSC 420. Distributed and Parallel Computing (4AF)

This course studies the methods for using several computers connected by a network to solve a single problem. Topics include networking services; middleware (CORBA, DCOM, SOAP, RMI and RPC); two- and three-tier client-server systems; algorithms for parallel computing; performance evaluation; and hardware architectures (clusters, grids, surfaces). Prerequisite: COSC 201 or permission of the instructor.

COSC 435. Human-Computer Interaction (4AS)

This course studies the methods employed in increasing the usability of software. Topics include usability testing; prototyping techniques and tools; user-interface design; HCI aspects of multimedia systems; HCI aspects of collaboration and communication. Prerequisite: COSC 201 or permission of the instructor.

COSC 440. Theory of Computation (4AF)

This course examines the mathematical models underlying computer science. Topics include finite automata; regular languages and regular grammars; context-free languages; simplification of context-free grammars and normal forms; push-down automata; Turing machines; limits of algorithmic computation; and NP-completeness. Prerequisite: COSC 251.

COSC 445. Design and Analysis of Algorithms (4AS)

This course studies the design, implementation and analysis of important algorithms. Topics include lower and upper complexity bounds; algorithm analysis techniques; NP-completeness; sorting algorithms; searching algorithms; graph algorithms; divide-and-conquer algorithms; greedy algorithms; dynamic programming; backtracking; probabilistic algorithms; and mathematical algorithms. Not open to students who have received credit for COSC 340. Formerly COSC 340. Prerequisites: COSC 201; and MATH 200 or MATH 281.

COSC 450. Database Management Systems (4AF)

This course examines the concepts of databases. Topics include flat, hierarchical and relational database models; entity attribute relationship modeling; relational calculus; data normalization; functional dependence; data integrity; transactions and rollback; data security; distributed databases; information and knowledge management; object-relational mapping; and object-oriented databases. Prerequisites: COSC 201; and MATH 200 or MATH 281.

COSC 460. Scientific Computing (4AF)

This course presents an overview of computational science- an emerging field that focuses on using computers to analyze scientific problems. Topics are drawn from the following: simulation and modeling, computational biology, scientific visualization, computational physics, and chaos theory. Prerequisite: COSC 201 or permission of the instructor.

COSC 480. Topics in Computer Science (4F)

This course is a rigorous study of an important field in computer science. Examples: data security; bioinformatics; natural language processing; compilers. A detailed course description will be available before registration. The course may be repeated for credit where the topic is not repetitive. Prerequisite: COSC 201 or permission of the instructor.

COSC 493, 494. St. Mary's Project in Computer Science (1-8E)

The St. Mary's Project in Computer Science is one of the culminating experiences in the computer science major. It usually is completed in the two semesters of the student's senior year. The project draws on and extends knowledge, analytical skills, and creative thought developed through previous work in computer science or related fields. Usually, it is initiated by the student; however, the student may peruse lists of project ideas developed by the computer science faculty or draw on other sources. The student shall select a faculty mentor and a topic with the advice of the department chair. A project proposal must be submitted, identifying the area to be explored and the methods of inquiry to be used. While working on the project, the student should learn a significant amount of computer science beyond that learned in previous course work. Upon completion, the project shall be presented to the public in a way agreed upon by the student, the mentor, and the department chair. Prerequisite: Consent of mentor and department chair.

COSC 495. Senior Project in Computer Science (4E)

Together with a 400-level computer science course, the Senior Project in Computer Science can be a component of the capstone experience in the major. Normally, a student will complete the project during the senior year. It draws on previous course work and study and should expand the student’s horizon in computer science and develop his or her thinking skills. The idea should come from the student, but lists of project ideas developed by the computer science faculty are available, and other sources may be used. The student shall select a faculty mentor and a topic with the advice of the department chair. A project proposal must be submitted, identifying the area to be explored and the methods of inquiry to be used. While working on the project, the student should learn a significant amount of computer science beyond that learned in previous course work. Upon completion, the project shall be presented to the public in a way agreed upon by the student, the mentor, and the department chair. Prerequisite: Consent of mentor and department chair.

COSC 398, 498. Off-Campus Internship (4-16E)

A variety of off-campus learning opportunities can be arranged through the director of internships. The off-campus internship is an individually designed experience that allows the student to explore the relationship between learning in the classroom and the practical application of knowledge in everyday work situations. Prerequisite: Admission to the Internship Program and approval of the academic adviser and department chair. (See Internships under Academic Policies section.) Credit/No Credit grading.

COSC 199, 299, 399, 499. Independent Study (1-4E)

This course consists of an independent creative or research project designed by the student and supervised by a computer science faculty member. The nature of the project, the schedule for accomplishment, and the means of evaluation must be formalized in a learning contract before registration. (See “Independent Study” under the “Academic Policies” section.)