Scroll down to read descriptions of the computer science courses offered at Carthage, or click on these links for additional resources:

CSC 1030

Data Science I

This class introduces students to the foundational skills needed for data analysis: data manipulation and visualization, statistical summarization, and problem-solving using data. No prior programming experience is needed, and students will become proficient at writing code in a modern computer environment.

CSC 1040

Data Science II

This class introduces students to the data structures and algorithms needed for complicated data analysis tasks. No prior programming experience is needed, and students will learn principles of computer science that will benefit them in future programming endeavors.
Prerequisite: CSC 1030 with a grade of C or better

CSC 1100

Introduction to Computing

An introduction to the art and science of computer programming for the student without previous programming experience. Topics covered include the historical development of computing, the basic operating principles of computers, and an introduction to problem-solving using one or more high-level computing languages, such as Python. Intended for nonmajors/nonminors. Does not count toward major or minor in CSC.

CSC 1810

Principles of Computer Science I

A study of the fundamentals of writing computer programs and problem-solving, using structured and object-oriented techniques. Intended for future majors and minors in computer science and minors in game development. Students are strongly encouraged to enroll in this call in the fall term of their first year.

CSC 1820

Principles of Computer Science II

The emphasis of this course is on problem-solving. Students will mature as problem-solvers as they are presented with increasingly challenging problems to program.
Prerequisite: CSC 1810 with a C or higher
Spring, with limited Fall availability

CSC 2560

Data Structures and Algorithms

An examination of advanced programming techniques for problem-solving and manipulating data using primarily object-oriented approaches.
Prerequisite: CSC 1820 with a C or higher

CSC 2710

Game Development I

Video games are serious work. Reaching far beyond the multibillion-dollar gaming industry, the lessons of video game development increasingly translate to disparate fields requiring simulation, training, and easy-to-use interfaces. This course introduces students to the game development and design process. Students will build games representative of a variety of genres. This is a project-based course.
Corequisite: CSC 1810 or instructor permission
Alternating Fall

CSC 2720

Game Development II

A continuation of CSC 2710 Game Development I with an emphasis on three dimensional environments. This is a project-based course.
Prerequisite: CSC 2710 with a C or better

CSC 2730

Game Development III

A continuation of CSC 2720 Game Development II focusing on advanced topics such as save systems and multiplayer.
Prerequisite: CSC 2720 with a C or better

CSC 2810

Database Design and Management

An introduction to database methods including data models (relational, object-oriented, network, and hierarchical); database design and modeling; implementation and accessing methods; and SQL. Students will design and implement a database using a database management system.
Prerequisite: CSC 1820 with a C or higher

CSC 2910

Object-Oriented Programming

An introduction to object-oriented design techniques including encapsulation, inheritance, and polymorphism. Other features of modern object-oriented programming languages are covered as well, including exception handling, garbage collection, event handling, and threads. A modern object-oriented language such as Java will be used.
Prerequisite: CSC 1820 with a C or higher

CSC 3210

Computing Paradigms

A survey of language-design issues and run-time behavior of several programming languages suitable for different problem-solving paradigms (structured, functional, object-oriented).
Prerequisite: CSC 2560 with a C or higher

CSC 3510

Computer Organization

A study of the lower levels of computers. Machine and assembly languages, memory, addressing techniques, interrupts, and input-output processing are also studied. This course compliments CSC 4370 Operating Systems. Students are encouraged to take this course in spring and CSC 4730 in the following fall term.
Prerequisite: CSC 2560 with a C or higher

CSC 3530

Artificial Intelligence and Cognitive Modeling

This course explores the primary approaches for developing computer programs that display characteristics we would think of as being intelligent. Students will analyze how intelligent systems are developed and implemented with a focus on exploring how human behavior on cognitive tasks can be used to inform the development of these artificial systems, as well as how the performance and behavior of these artificial systems can inform our understanding of human cognition.
Prerequisite: CSC 2560 with a C or higher or with permission of instructor

CSC 3600

Network Programming

An examination of data communications and communications networks including signal encoding, multiplexing, circuit and packet-switched networks, TCP/IP, WANs, LANs, and intranets. Particular emphasis is placed on socket-based, multi-threaded programming.
Prerequisite: CSC 2560 with a C or higher

CSC 3750


This course studies various problem-solving strategies and examines the classification, design, complexity, and efficiency of algorithms.
Prerequisites: CSC 1820 with a C or higher and either MTH 1060 or MTH 1240

CSC 3770

Computer Graphics

Given the ubiquity of computer graphics in modern culture (in forms such as computer gaming, motion pictures, and other kinds of visual entertainment), the deeply technical nature of its formulation and construction can be overlooked. This course provides an introduction to computer graphics covering aspects of linear algebra, geometry, color, vision, and the unique nature of modern graphics programming. This course is project driven.
Prerequisite: CSC 2560 with a C or higher

CSC 3810

Foundations of Computer Science

This course examines various models of computation, including finite and pushdown automata and recursive functions. Language grammars, parsing, and complexity classes also are studied. Special schedule.
Prerequisite: CSC 3750

CSC 4000

Senior Seminar

Students review and discuss current issues and trends in computer science.
Prerequisites: Senior standing, completion of six CSC courses, and instructor permission

CSC 4350

Software Design and Development

An examination of the software development process from analysis through maintenance using both structured and object-oriented methods. Students work together on a team project. Should be taken in the spring term of junior year.
Prerequisite: CSC 2560 with a C or higher

CSC 4500

Independent Study

Independent study in a topic of interest in computer science that does not duplicate any other course in the regular course offerings.
Prerequisite: CSC 2560

CSC 4650

Computer Architecture

Students examine various computer architectures including the von Neumann mode, RISC/CISC, and parallel architectures.
Prerequisite: CSC 3510 with a C or better

CSC 4730

Operating Systems

A study of the basic components and concepts of a multitasking operating system including processes, scheduling, resource management, I/O and file systems, virtual memory, security, and semaphores.
Prerequisite: CSC 2560 with a C or higher

CSC 4900

Research in Computer Science

An opportunity to conduct research in computer science, culminating in a research paper.
Prerequisites: CSC 1820 with a C or higher and instructor approval

CSC 4990

Senior Thesis Completion

Students should register for CSC 4990 during the semester that they intend to complete and present their Senior Thesis.

MTH 1240

Discrete Structures

A study of logic, proofs, and sets; graphs, digraphs, trees, colorings, and traversal; permutations and combinations; binomial coefficients; and recurrence relations.
Prerequisite: MTH 1120, CSC 1100, CSC 1810, or CSC 1030, or departmental approval