Computer Science

Requirements & Courses

  • Major Requirements

    Forty-eight credits, which must include:

    1. CSC-115, 121, 122, 230, 240, 310, 440, and 450.
    2. CSC-470 or CSC-500 (4 cr.)
    3. MTH-120
    4. Complete eight credits from: CSC courses numbered above 310, MTH-116, 121, 223, 242, 336, or 341. Other courses may fulfill this requirement with permission of the department. 
    5. The senior comprehensive examination is the successful completion of the Major Field Test. 
  • Program Considerations

     

    Graduate school bound students are strongly encouraged to take CSC-420, 430, 440, and to minor in mathematics. Many graduate schools expect undergraduate research as part of entering students’ background; thus, a senior thesis is also encouraged. Consult carefully with your advisor. Students seeking a technical professional position upon graduation are strongly encouraged to take CSC-410, 420, 430, 440 and MTH-116 and 117; a practicum is recommended.

  • Minor Requirements

    Twenty-four credits, which must include:

    1. Complete one course from the following: CSC-115, CSC-118, CSC-119, or DAT-116.
    2. CSC-121 and MTH-120
    3. Complete a minimum of 12 credits in CSC numbered 200 or above, excluding courses numbered 450 and above. 

    Note: some advanced CSC courses have CSC prerequisites that could result in a minor larger than 24 credits, this would depend on students’ particular interest. 

  • Four credits from CSC 120 or higher, with the exception of practicum or independent study courses, count towards the Distributive Requirements in the Natural Sciences - Mathematics/Computation.

Courses

  • CSC
    100
    .
    Computer Systems
    2 credits
    Introduction to the use of modern computer systems. Basics of word-processing, graphics, spreadsheets, Internet access and Web development software. Use of computer peripherals such as printers, scanners and digital cameras. Taught in a laboratory setting.
  • CSC
    105
    .
    Modern Spreadsheets
    2 credits
    Prerequisite: MTH-100 or Placement
    Introduction to the use of modern spreadsheets, with a particular emphasis on business applications. Taught in a laboratory setting.
  • CSC
    115
    .
    Algorithms and Justice
    4 Credits
    Social media algorithms decide what we see and what we don't see. Machine learning algorithms try to predict what we want-or what we deserve. What do we mean by "algorithms"? How do they affect our daily lives? How do algorithms reproduce, or resist, biases that exist in our society? How do humans communicate these algorithms to the computers that enact them? This course explores all these questions. No previous programming experience is expected; we will spend some exploring algorithms with the Python programming language.
  • CSC
    116
    .
    Programming With Data
    4 credits
    Introduction to programming techniques for the manipulation and analysis of digital data. Programming topics include: digital representations of data, types of data, programming decision and repetition, functions and libraries for storing and manipulation data in the language of instruction (e.g. the pandas library of Python). Data topics include: common formats (e.g. CSV, JSON, XML, database), missing data, cleaning data, exploratory data analysis. Visualizing and presenting data to support an argument. Cross-listed with DAT-116.
  • CSC
    117
    .
    Image and Reality
    4 credits
    Prerequisite: MTH-100 or Placement
    Explores the current reality of artificial intelligence and visions of what it is and will be. Examination of current artificial intelligence systems. Particular emphasis on robotics, with projects involving robot design, creation and programming. Laboratory.
  • CSC
    118
    .
    Introduction to Game Programming
    4 Credits
    Introduction to programming, focusing on fundamental knowledge and skills for creating videogames. Multiple platforms, including a popular game engine such as Unity or Unreal and the game-writing support in a popular language such as Python.
  • CSC
    119
    .
    Computer Science for Everyone
    4 Credits
    Introductory overview of fundamental concepts in computer science. Topics include digital representation of information (media, text, numbers), algorithms, ways of approaching programming, the relationship between software and hardware, and the limitations of computers. No previous programming experience expected.
  • CSC
    120
    .
    Object-Oriented Programming I
    4 credits
    Prerequisite: MTH-100 or placement
    Fundamentals of object-oriented programming in the language of instruction (e.g., Java). Topics include: basic computation, input and output, control structures, classes and object instantiation, methods and parameter passing, arrays and strings, sorting and searching. Laboratory.
  • CSC
    121
    .
    Problem-Solving With Python
    4 Credits
    Intensive study of algorithm problem-solving and effective programming using the Python programming language. Use of Integrated Development Environments (IDEs). Overview of functional, imperative, and object-oriented programming techniques. Using and creating modules and libraries. Python's object model. Laboratory.
  • CSC
    122
    .
    Network and Web Programming
    4 Credits
    Introduction to the design and operation of the internet, especially the World Wide Web. Introduction to client/server applications. Presentation languages such as HTML and CSS; using the Document Object Model to navigate webpages. Implementing client and server applications in a language such as Python or JavaScript.
  • CSC
    230
    .
    Software Design
    4 credits
    Prerequisite: CSC-121 and MTH-120
    Software design: requirements, specification, modern design techniques, program testing methods. Applications of advanced data structures.
  • CSC
    240
    .
    Algorithms and Complexity
    4 credits
    Prerequisite: MTH-120 and CSC-121
    Advanced data structures and algorithms, algorithmic analysis, and an introduction to distributed and parallel algorithms.
  • CSC
    280
    .
    Topics in Computer Science
    2-4 credits
    Prerequisite: CSC-121 and Permission
    Topical study in computer science. While topics vary, the course usually introduces a particular computer programming language (e.g., C, C++, Prolog, etc.).
  • CSC
    310
    .
    Computer Organization
    4 Credits
    Structure and organization of digital computers, including digital representation of data, digital circuit ("logic") design, and memory addressing schemes. Introduction to low-level programming languages, including assembly languages and programmatic memory management. Laboratory. Course fee.
  • CSC
    315
    .
    Machine Learning
    4 credits
    Prerequisite: DAT 116 or CSC 121, and MTH 242, or Permission
    Principles and techniques for machine-based decision and prediction from large datasets. Algorithms for and applications of classification, regression, and unsupervised learning. Introduction to neural networks and deep learning. Use of machine learning libraries in languages such as Python and R.
  • CSC
    335
    .
    Computer Graphics
    4 credits
    Prerequisite: CSC-230
    Introduction to techniques of computer graphics including three-dimensional representations, perspective, computer animation, computer art and applications of computer graphics to various other disciplines.
  • CSC
    345
    .
    Artificial Intelligence
    4 credits
    Prerequisite: CSC-121
    Survey of major topics in artificial intelligence. Emphasis on fundamental concepts: search, knowledge representation, problem solving and logic. Additional topics such as expert systems, learning, natural language processing, neural networks, planning, theorem proving and vision. Programming in an AI language.
  • CSC
    380
    .
    Topics in Computer Science
    2-4 credits
    Prerequisite: CSC-335 or Permission
  • CSC
    399
    .
    Computer Science Independent Study
    1 credit
    Requires instructor permission.
  • CSC
    410
    .
    Database Management
    4 credits
    Prerequisite: CSC-230
    In-depth study of techniques for storing, selecting and retrieving data. Topics selected from file and database organization, safety and recovery, privacy, security and commercial systems.
  • CSC
    420
    .
    Operating Systems
    4 credits
    Prerequisite: CSC-310
    Survey of major concepts of operating systems. Investigation of relationships among the operating system, the architecture and the systems programs of a computer system.
  • CSC
    430
    .
    Theory of Computing
    4 credits
    Prerequisite: CSC-120 and MTH-223
    In-depth study of the main components of the theory of computation: finite automata and computability.
  • CSC
    440
    .
    Languages and Translators
    4 credits
    Prerequisite: CSC-310
    An in-depth study of the principles of programming languages and language-translation. Includes major programming paradigms in historical and modern contexts and explores language translation via interpreters and compilers, including lexical, syntactic, and semantic analysis.
  • CSC
    450
    .
    Software Collaboration
    4 Credits
    Techniques and practices for the collaborative production and maintenance of software. Software development methodologies. Sharing and managing project assets. Testing, integration, and delivery. Project management. Focus on collaborative creation of a working prototype of a useful software application.
  • CSC
    470
    .
    Computer Science Capstone
    4 Credits
    Project-based synthesis of skills and knowledge from computer science and general education courses. Most projects will emphasize team-based development of software that addresses a problem in the Alma/College community.
  • CSC
    499
    .
    Computer Science Independent Study
    1 credit
    Requires instructor permission.
  • CSC
    500
    .
    Senior Thesis
    1 credit
    Requires instructor permission.