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/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.
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 (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 360. Introduction to Data Science (4AF)
This course serves as an introduction to the programming and data analysis techniques required
for data science. Topics include: basic data science tools and techniques, data acquisition and
analysis, basic predictive modelling, and ethics in data science. Not open to students who have
received credit for COSC 480 – Data Science or COSC 481 – Introduction to Data Science.
Prerequisites: COSC 251 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. Prerequisites: COSC 201; and MATH 200 or MATH 281.
COSC 381. Coding Interview Practicum (1E)
This course provides an opportunity for students to practice for the “Coding Interview” used by
many employers as part of their interviewing process. In a “Coding Interview” the interviewee
talks through their process of solving a small but challenging programming problem while
writing the solution in a programming language on a whiteboard. This course may be repeated
for credit. Prerequisite: COSC 201.
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 401/402. Software Startup Simulator Capstone (4F/S)
This course will have students work in large teams to create programming solutions for campus
and/or local non-profit customers. Students will get the experience of working with a customer
in a large team setting that simulates a real world software development team. Activities will
include professional development from interview skills to leadership training, software design
and engineering, as well as software development, quality assurance and documentation.
Prerequisite: COSC 201; and MATH 200 or MATH 281.
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. Acceleration (4AF)
This course will study the tools, techniques and architectures to provide hardware acceleration of
software. Topics include: high-level synthesis, register transfer level descriptions and synthesis,
gate and transistor level descriptions, finite state machines, systolic arrays and pipeline
architectures. Both Field Programmable Gate Array (FPGA) and custom integrated circuit
approaches will be covered. In addition to the application of Electronic Design Automation
(EDA) tools, the algorithms they use will be described. Prerequisites: COSC 230 or permission
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 460. Advanced Data Science and Visualization (4AS)
This course serves as an advanced exploration into the programming and data visualization
techniques required for data science. Topics include: advanced inference and predictive
modelling, data mining, data visualization, and ethics in data science. The course will include a
major team project that will involve all aspects of the data science sequence. Prerequisite: COSC
360 or permission of the instructor.
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.