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 MAT 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.

Upon graduation with a major in computer science students will:

DEGREE REQUIREMENTS FOR THE MAJOR

  1. General College Requirements (see “Curriculum” section).
  2. Required Courses (28 credit hours):
    • COSC 120: Introduction to Computer Science I
    • COSC 130: Introduction to Computer Science II
    • MATH 151: Calculus I
    • MATH 200: Discrete Mathematics (or MATH 281: Foundations of Mathematics)
    • COSC 201: Algorithms and Data Structures
    • COSC 230: Computer Architecture
    • COSC 251: Programming Languages
  3. Elective Courses (20 credit hours)
    • Five of the following courses:
      • COSC 301: Software Engineering I
      • COSC 335: Operating Systems
      • COSC 336: Computer Networks
      • COSC 338: Computer Graphics
      • COSC 370: Artificial Intelligence
      • COSC 420: Distributed and Parallel Computing
      • COSC 438: Game Design and Development
      • COSC 440: Theory of Computation
      • COSC 445: Design and Analysis of Algorithms
      • COSC 450: Database Management Systems
      • COSC 455: Graph Theory
      • COSC 480: Topics in Computer Science
  4. Capstone Experience (8 credit hours). 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 (8 credit hours)*
    2. One 400-level computer science course** and a Senior Project in Computer Science COSC 495 (4 credit hours)
    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 credit hours 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 credit hours):
    • COSC 120: Introduction to Computer Science I
    • COSC 130: Introduction to Computer Science II
    • COSC 201: Algorithms and Data Structures
  2. Elective Courses (12 credit hours)
    • 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 335: Operating Systems
      • COSC 336: Computer Networks
      • COSC 338: Computer Graphics
      • COSC 370: Artificial Intelligence
      • COSC 420: Distributed and Parallel Computing
      • COSC 438: Game Design and Development
      • COSC 440: Theory of Computation
      • COSC 445: Design and Analysis of Algorithms
      • COSC 450: Database Management Systems
      • COSC 455: Graph Theory
      • COSC 480: Topics in Computer Science
  3. Students must complete the required 24 credit hours, 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 (department chair), Susan Goldstine, Alan Jamieson, Lindsay H. Jamieson, Emek Köse, David Kung, Alex Meadows, Simon Read, Ivan Sterling.

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 181. Emerging Scholars Program (1F)

Supplemental problem-solving workshop for Introduction to Computer Science (COSC 120) students in the Emerging Scholars Program. Co-requisites: COSC 120 and permission of the instructor.

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. Formerly COSC 351. Not open to students who have received credit for COSC 351. Prerequisite: COSC 201; and MATH 200 or MATH 281.

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 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). Prerequisite: COSC 230.

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. Prerequisites: COSC 201 and MATH 152.

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. Prerequisites: COSC 201; and MATH 200 or MATH 281.

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. This course may be repeated for credit. Prerequisite: Consent of the instructor.

COSC 395. Classroom Assistantship (1-3E)

This course provides a credit-based experience for classroom assistants. The students serving as classroom assistants will attend their assigned classes, hold review sessions/programming studios and assist faculty members during in-class assignments, among other duties. This course will follow the general college policies for classroom assistantship courses. This course may be repeated once. Prerequisites: Permission of the instructor, junior or senior standing, minimum 2.5 GPA and at least 8 credits of 200-level or above coursework in Computer Science.

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 438. Game Design and Development (4AF)

This course serves as an introduction to game design and game development. Topics include: game engine usage; game genre analysis; artificial intelligence in games; game development lifecycle; various game design strategies; network architecture in games; and game development in a current programming language. Students will complete a major game development project. Formerly COSC 480 Topics in Computer Science: Game Design and Development. Not open to students who have received credit for COSC 480 Topics in Computer Science: Game Design and Development. Prerequisites: COSC 201; and MATH 200 or MATH 281.

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. Prerequisites: COSC 201; and MATH 200 or MATH 281.

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 455. Graph Theory (4AS)

This course will introduce students to the fundamental principles of Graph Theory. Students will explore both the mathematics concepts regarding Graph Theory and the algorithms for and uses of these concepts. Projects will be geared toward marrying the mathematics and computer science sides of Graph Theory and using the strengths of the students to discuss specific graph problems. Prerequisites: COSC 201; and MATH 200 or MATH 281.

COSC 480. Topics in Computer Science (4E)

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 Career Development Center. 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.)