Computer Science
COSC 120. Introduction to Computer Science I (4E)
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 and 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 (4E)
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 199/299/388/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.
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 and primary, secondary and tertiary storage structures. Prerequisites: COSC 130; and MATH 200 or MATH 281.
COSC 251. Programming Languages (4S)
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 and 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) and 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. Computer Science Team Seminar I (1F)
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 392. Computer Science Team Seminar II (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 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. Credit/no credit grading.
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.