Academic Bulletin

Computer Science

Professors Jumadinova (Chair), Bonham-Carter, Kapfhammer, Luman

Computer Science focuses on computational theory and the rich interplay between computer hardware and software. Students use scientific and design-centric approaches to solve computational problems and to create and evaluate realistic computer and computer-based systems.

The study of computer science leads to and requires the ability to analyze ideas, to think logically, and to communicate ideas clearly and concisely. In this way, study of computer science contributes to the foundation of an excellent liberal arts education.

Computer Science Learning Outcomes

  • Demonstrate and be able to communicate the knowledge of data types, algorithms, and mathematical principles behind discrete objects.
  • Use scientific and theoretical methods to design, implement, evaluate, deploy, improve, maintain, and document software and hardware systems.
  • Apply and articulate key concepts from a specialization area where the interconnection between software and hardware is important and evident.
  • Able to communicate technical details of the produced software and hardware artifacts both in writing and orally.

Computer Science Major

Computer Science is associated with Mathematics and Natural Sciences. Students who major in Computer Science may not double-major or minor in Data Science, Informatics, or Software Engineering.

The Computer Science major leads to the Bachelor of Science degree and requires a minimum of 48 semester credit hours. To graduate with a major in Computer Science, a student must have an earned GPA of at least 2.0 in required Computer Science and other courses presented for the major. At most one of the foundation courses (CMPSC 100, CMPSC 101, or CMPSC 102) may be presented for the major on the Credit/No Credit grade basis. Students who are interested in Mathematics and/or planning to attend graduate school in Computer Science are strongly encouraged to take Math 151 early in their academic career. Students who major in Computer Science may incorporate Mathematics courses into their study through the following substitutions:

  • Math 205 as a substitute for CMPSC 102
  • Math 320, Math 330, Math 345, or Math 370 as a substitute for one of the required specialization courses.

Program Requirements:

Foundation

Take all of the following three courses (12 credits):

  • CMPSC 100 - Computational Expression Credits: 4
  • CMPSC 101 - Data Structures Credits: 4
  • CMPSC 102 - Discrete Structures Credits: 4

Core

Take all of the following four courses (16 credits):

  • CMPSC 200 - Computer Organization Credits: 4
  • CMPSC 202 - Algorithm Analysis Credits: 4
  • CMPSC 204 - Theoretical Machines Credits: 4
  • CMPSC 406 - Internet of Things Credits: 4

Elective

Take two of the following three courses (8 credits):

  • CMPSC 300 - Bioinformatics Credits: 4
  • CMPSC 304 - Robotic Agents Credits: 4
  • CMPSC 400 - Operating Systems Credits: 4
  • CMPSC 403 - Computer Security Credits: 4

Project

  • CMPSC 580 - Junior Seminar Credits: 4
  • CMPSC 600 - Senior Thesis I Credits: 4
  • CMPSC 610 - Senior Thesis II Credits: 4

Computer Science Minor

Students who minor in Computer Science may not major in Data Science, Informatics, or Software Engineering.

The minor in Computer Science requires the completion of at least 24 semester hours of coursework, as outlined below. Students may take Math 205 as a substitute for CMPSC 102.

Take all of the following courses (8 credits):

  • CMPSC 100 - Computational Expression Credits: 4
  • CMPSC 102 - Discrete Structures Credits: 4

Take two of the following courses (8 credits):

  • CMPSC 200 - Computer Organization Credits: 4
  • CMPSC 202 - Algorithm Analysis Credits: 4
  • CMPSC 204 - Theoretical Machines Credits: 4
  • CMPSC 406 - Internet of Things Credits: 4

Take two of the following courses (8 credits):

  • CMPSC 304 - Robotic Agents Credits: 4
  • CMPSC 400 - Operating Systems Credits: 4
  • CMPSC 403 - Computer Security Credits: 4

Informatics

Professors Jumadinova (Chair), Bonham-Carter, Kapfhammer, Luman

Informatics focuses on critical approaches to information and technology, with an emphasis on interdisciplinary methods. Students develop ethical and technical frameworks and apply them to a wide-ranging set of culturally-relevant problems in order to enrich the public understanding of the relationship between information and culture.

Informatics Learning Outcomes

  • Demonstrates and articulates the distinct concerns of informatics-informed approaches to understanding information as cultural material.
  • Produce and present disciplinary findings in digital, artistic, oral, and/or written format.
  • Develop competency in the theories, methods, and practices of domains on which to apply informatics techniques.
  • Able to design scholarly projects and clearly and persuasively articulate their outcomes.

Informatics Major

Because this program is Interdisciplinary Studies, students who major in Informatics may complete any minor to satisfy the college requirement that the major and minor be in different areas of study. However, students who major in Informatics may not double-major or minor in Computer Science, Data Science, or Software Engineering.

The Informatics major leads to the Bachelor of Arts or the Bachelor of Science degree (students may elect to receive either degree) and requires a minimum of 48 semester credit hours. At most one of the foundation courses (CMPSC 100, CMPSC 101, or CMPSC 105) may be presented for the major on the Credit/No Credit grade basis. Courses with prerequisites are marked with an asterisk (*).

Program Requirements:

Foundation

Take all of the following three courses (12 credits):

  • CMPSC 100 - Computational Expression Credits: 4
  • CMPSC 101 - Data Structures Credits: 4 *
  • CMPSC 105 - Data Exploration Credits: 4

Core

Take a total of four courses (16 credits), including two courses from the “Methods” category.

  • CMPSC 350 - Computational Narrative Credits: 4 *
  • COMM 342 - Digital Media and Technology Credits: 4 *
  • Methods:

    Take two of the following courses (8 credits):

    • ART 187 - Electronic & Intermedia Art Credits: 4
    • ART 287 - Art a the Intersection of Science and Culture Credits: 4 *
    • CMPSC 302 - Web Development Credits: 4 *
    • COMM 376 - Ethnographic Methods in Media and Cultural Studies Credits: 4 *
    • FILM 171 - Filmmaking 1 Credits: 4
    • FILM 300 - Filmmaking 2 Credits: 4 *
    • FILM 375 - Documentary Traditions Credits: 4 *

Applications Modules

Choose a minimum of two courses (8 credits) from a minimum of one application module. Students should consult with an advisor to design their application module coursework in relation to their interests, questions, and goals, as well as their overall program of study.

Humanities Informatics

Practices which build and maintain technical platforms to answer questions traditionally thought of as the domain of the Humanities, particularly those in (but not limited to) History, English, and Art.

Take at least two of the following (at least one course must be at the 200-level or above):

  • ART 251 - Contemporary Art Writing Credits: 4 *
  • ART 343 - Feminist Art Histories Credits: 4 *
  • Any ENGL 100-level Credits: 4
  • ENGL 360 - Language, Theory, and Practice Credits: 4 *
  • HIST 170 - Introduction to Public History Credits: 4
  • PHIL 140 - Ethics and Community Credits: 4
  • RELST 180 - Religion in American Life Credits: 4
  • RELST 200 - Christian Ethics Credits: 4
  • RELST 341 - Jewish Ethics Credits: 4
Geoinformatics

Study and development of technologies that use information to address issues in geology, geography, cartography, and other related sciences.

Take at least two of the following (at least one course must be at the 200-level or above):

  • ENVSC 285 - Quantitative Sustainability Credits: 4 *
  • ENVSC 305 - Environmental GIS I Credits: 4 *
  • ENVSC 306 - Environmentatl GIS II Credits: 4 *
  • GEO 110 - Physical Geology Credits: 4
  • CMPSC 304 - Robotic Systems Credits: 4 *
  • CMPSC 305 - Database Systems Credits: 4 *
  • CMPSC 406 - Internet of Things Credits: 4 *
Polinformatics

Practices focused on building and maintaining information and information systems which pertain to questions characterized as social science, in particular those concerned with (but not limited to) governance and political participation.

Take at least two of the following (at least one course must be at the 200-level or above):

  • COMM 256 - Power, Politics, and Communication Credits: 4
  • COMM 360 - Communication and Civic Engagement Credits: 4 *
  • POLSC 120 - Comparative Politics Credits: 4
  • POLSC 215 - Politics in Popular Culture Credits: 4
  • POLSC 318 - Politics and the Media Credits: 4
  • POLSC 321 - Urban Government and Politics Credits: 4
  • POLSC 424 - Inequality and Social Policy Credits: 4
  • PHIL 210 - Oppression and Liberation Credits: 4
Health Informatics

Practices which build, maintain, and conceptualize the role of information and information systems in clinical, professional, and academic contexts with particular emphasis on health data (for example, electronic health records (EHR)).

Take at least two of the following (at least one course must be at the 200-level or above):

  • CMPSC 300 - Bioinformatics Credits: 4 *
  • COMM 331 - Disease, Disability, and Difference in Popular Culture Credits: 4 *
  • GHS 228 - Global Health Data and Visualization Credits: 4
  • GHS 235 - Global Health Ethics Credits: 4 *
  • GHS 321 - Epidemiology Credits: 4 *
  • GHS 354 - Medical Anthropology Credits: 4
  • HIST 380 - Disease and Medicine in Modern History Credits: 4 *
  • PHIL 385 - Medical Ethics Credits: 4

Project

  • CMPSC 580 - Junior Seminar Credits: 4 *
  • INFM 600 - Senior Project I Credits: 4 *
  • INFM 610 - Senior Project II Credits: 4 *

Note: With advisor approval, students may substitute a Junior Seminar in another department for CMPSC 580.

Informatics Minor

Students who minor in Informatics may complete any major to satisfy the college requirement that the major and minor be in different areas of study. However, students who minor in Informatics may not major in Computer Science, Data Science, or Software Engineering.

The minor in Informatics requires the completion of at least 24 semester hours of coursework, as outlined below.

Foundation

Take all two of the following courses (8 credits):

  • CMPSC 100 - Computational ExpressionCredits: 4
  • CMPSC 101 - Data StructuresCredits: 4

Core

Take all two of the following courses (8 credits):

  • CMPSC 350 - Computational NarrativeCredits: 4 *
  • COMM 342 - Digital Media and TechnologyCredits: 4 *

Take two courses from one application module (8 credits):

Humanities Informatics

Practices which build and maintain technical platforms to answer questions traditionally thought of as the domain of the Humanities, particularly those in (but not limited to) History, English, and Art.

  • ART 251 - Contemporary Art Writing Credits: 4 *
  • ART 343 - Feminist Art Histories Credits: 4 *
  • Any ENGL 100-level Credits: 4
  • ENGL 360 - Language, Theory, and Practice Credits: 4 *
  • HIST 170 - Introduction to Public History Credits: 4
  • PHIL 140 - Ethics and Community Credits: 4
  • RELST 180 - Religion in American Life Credits: 4
  • RELST 200 - Christian Ethics Credits: 4
  • RELST 341 - Jewish Ethics Credits: 4
Geoinformatics

Study and development of technologies that use information to address issues in geology, geography, cartography, and other related sciences. At least one course must be taken outside of CMPSC.

  • ENVSC 285 - Quantitative Sustainability Credits: 4 *
  • ENVSC 305 - Environmental GIS I Credits: 4 *
  • ENVSC 306 - Environmentatl GIS II Credits: 4 *
  • GEO 110 - Physical Geology Credits: 4
  • CMPSC 304 - Robotic Systems Credits: 4 *
  • CMPSC 305 - Database Systems Credits: 4 *
  • CMPSC 406 - Internet of Things Credits: 4 *
Polinformatics

Practices focused on building and maintaining information and information systems which pertain to questions characterized as social science, in particular those concerned with (but not limited to) governance and political participation.

  • COMM 256 - Power, Politics, and Communication Credits: 4
  • COMM 360 - Communication and Civic Engagement Credits: 4 *
  • POLSC 120 - Comparative Politics Credits: 4
  • POLSC 215 - Politics in Popular Culture Credits: 4
  • POLSC 318 - Politics and the Media Credits: 4
  • POLSC 321 - Urban Government and Politics Credits: 4
  • POLSC 424 - Inequality and Social Policy Credits: 4
  • PHIL 210 - Oppression and Liberation Credits: 4
Health Informatics

Practices which build, maintain, and conceptualize the role of information and information systems in clinical, professional, and academic contexts with particular emphasis on health data (for example, electronic health records (EHR)).

  • CMPSC 300 - Bioinformatics Credits: 4 *
  • COMM 331 - Disease, Disability, and Difference in Popular Culture Credits: 4 *
  • GHS 228 - Global Health Data and Visualization Credits: 4
  • GHS 235 - Global Health Ethics Credits: 4 *
  • GHS 321 - Epidemiology Credits: 4 *
  • GHS 354 - Medical Anthropology Credits: 4
  • HIST 380 - Disease and Medicine in Modern History Credits: 4 *
  • PHIL 385 - Medical Ethics Credits: 4

Data Science

Professors Jumadinova (Chair), Bonham-Carter, Kapfhammer, Luman

Data Science focuses on the study of integrated principles and methods to analyze complex big data for decision making, prediction, modeling, and data management. Students examine social and human contexts and ethical implications of how data are collected, analyzed, and utilized in diverse areas.

Data Science Learning Outcomes

  • Effectively collects, organizes, analyzes and interprets both structured and unstructured datasets from diverse sources.
  • Can effectively and ethically use statistical data analysis techniques, modern machine learning algorithms, and state-of-the-art software tools and programming environments to design, build, evaluate, and deploy new predictive models.
  • Demonstrates and articulates the value of subject matter expertise in domains that apply data science techniques.
  • Can clearly and persuasively communicate the results of data analysis including critical examination and reflection on the ethical implications of such analysis.

Data Science Major

Data Science is associated with Interdisciplinary Studies. Students who major in Data Science may complete any minor to satisfy the college requirement that the major and minor be in different areas of study. However, students who major in Data Science may not double-major or minor in Computer Science, Informatics, or Software Engineering.

The Data Science major leads to the Bachelor of Science degree and requires a minimum of 48 semester credit hours. To graduate with a major in Data Science, a student must have an earned GPA of at least 2.0 in required Data Science and other courses presented for the major. At most one of the foundation courses (CMPSC 100, CMPSC 102 101, or CMPSC 105) may be presented for the major on the Credit/No Credit grade basis.

Program Requirements:

Foundation

Take all of the following three courses (12 credits):

  • CMPSC 100 - Computational Expression Credits: 4
  • CMPSC 101 - Data Structures Credits: 4
  • CMPSC 105 - Data Exploration Credits: 4

Core

Take a total of five courses (20 credits), including a choice of a statistics course based on the chosen area of interest.

  • CMPSC 301 - Data Science Credits: 4
  • CMPSC 405 - Deep Learning Credits: 4
  • Effective Communication: take one of the following courses (4 credits):
    • ENGL 210 - Writing Creative Nonfiction Credits: 4
    • ENGL 208 - Professional Communication Credits: 4
    • FILM 375 - Documentary Traditions Credits: 4
    • COMM 360 - Rhetoric and Civic Engagement Credits: 4
  • Ethics: take one of the following courses (4 credits):
    • PHIL 130 - Values and Knowledge Credits: 4
    • PHIL 140 - Ethics and Community Credits: 4
    • PHIL 210 - Oppression and Liberation Credits: 4
    • POLSC 140 - Introduction to Political Theory Credits: 4
    • PSYCH 162 - Human Social Behavior Credits: 4
    • RELST 200 - Christian Ethics Credits: 4
    • RELST 341 - Jewish Ethics Credits: 4
  • Statistics: take one of the following courses (4 credits):
    • BIO 385 - Biostatistics Credits: 4
    • ECON 202 - Economic Statistics Credits: 4
    • POLSC 489 - Statistics and Data Analysis Credits: 4
    • MATH 345 - Probability and Statistical Inference I Credits: 4
    • PSYCH 207 - Statistical Methods in Psychology Credits: 4

Electives

Take one of the following courses (4 credits):

  • ECON 203 - Economic Statistics II Credits: 4
  • ECON 241 - Behavioral Economics Credits: 4
  • GHS 223 - People & Poisons: Foundations of Public Health Toxicology Credits: 4
  • GHS 228 - Global Health Data & Visualization Credits: 4
  • BIO 321 OR GHS 321 - Epidemiology Credits: 4
  • MATH 320 - Linear Algebra Credits: 4
  • MATH 346 - Probability/Statistical Inference II Credits: 4
  • PSYCH 307 - Intermediate Statistics Credits: 4
  • COMM 376 - Ethnographic Methods in Media and Cultural Studies Credits: 4
  • CMPSC 300 - Bioinformatics Credits: 4
  • CMPSC 302 - Web Development Credits: 4
  • CMPSC 303 - Artificial Intelligence Credits: 4
  • CMPSC 305 - Database Systems Credits: 4
  • CMPSC 350 - Computational Narrative Credits: 4
  • CMPSC 406 - Internet of Things Credits: 4

Project

Take all of the following three courses (12 credits):

  • CMPSC 580 - Junior Seminar Credits: 4
  • DS 600 - Senior Thesis I Credits: 4
  • DS 610 - Senior Thesis II Credits: 4

Note: With advisor approval, students may substitute a Junior Seminar in another department for CMPSC 580.

Data Science Minor

Students who minor in Data Science may complete any major to satisfy the college requirement that the major and minor be in different areas of study. However, students who minor in Data Science may not major or double-minor in Computer Science, Informatics, or Software Engineering.

The minor in Data Science requires the completion of at least 24 semester hours of coursework, as outlined below.

Take all three of the following courses (12 credits):

  • CMPSC 100 - Computational Expression Credits: 4
  • CMPSC 105 - Data Exploration Credits: 4
  • CMPSC 301 - Data Science Credits: 4

Take one of the following courses (4 credits):

  • PHIL 130 - Values and Knowledge Credits: 4
  • PHIL 140 - Ethics and Community Credits: 4
  • PHIL 210 - Oppression and Liberation Credits: 4
  • POLSC 140 - Introduction to Political Theory Credits: 4
  • PSYCH 162 - Human Social Behavior Credits: 4
  • RELST 200 - Christian Ethics Credits: 4
  • RELST 341 - Jewish Ethics Credits: 4

Take one of the following courses (4 credits):

  • ENGL 210 - Writing Creative Nonfiction Credits: 4
  • ENGL 208 - Professional Communication Credits: 4
  • FILM 375 - Documentary Traditions Credits: 4
  • COMM 360 - Rhetoric and Civic Engagement Credits: 4

Take one of the following courses (4 credits):

  • BIO 385 - Biostatistics Credits: 4
  • ECON 202 - Economic Statistics Credits: 4
  • POLSC 489 - Statistics and Data Analysis Credits: 4
  • MATH 345 - Probability and Statistical Inference I Credits: 4
  • PSYCH 207 - Statistical Methods in Psychology Credits: 4

Software Engineering

Professors Jumadinova (Chair), Bonham-Carter, Kapfhammer, Luman

Software engineering focuses on the knowledge and skills that teams and individuals need to develop and maintain large-scale software systems. Students apply engineering principles and industry-standard software tools to design, implement, test, release, and enhance software for real-world customers.

Software Engineering Learning Outcomes

  • While working in a team, can effectively design, implement, evaluate, improve, and document a solution to a problem delivered as a maintainable software system.
  • Demonstrates competency in the theories, models, and practices of project domains that require the engineering of software.
  • Can effectively manage and predict the cost, scope, and deadline of a software engineering project.
  • Uses effective oral and written communication methods to explain both the technical and product-use details of a software artifact.

Software Engineering Major

Software Engineering is associated with Mathematics and Natural Sciences. Students who major in Software Engineering may not double-major or minor in Computer Science, Data Science, or Informatics.

The Software Engineering major leads to the Bachelor of Science degree and requires a minimum of 48 semester credit hours. To graduate with a major in Software Engineering, a student must have an earned GPA of at least 2.0 in required Software Engineering and other courses presented for the major. At most one of the foundation courses (CMPSC 100, CMPSC 101, or CMPSC 104) may be presented for the major on the Credit/No Credit grade basis.

Program Requirements:

Foundation

Take all of the following three courses (12 credits):

  • CMPSC 100 - Computational Expression Credits: 4
  • CMPSC 101 - Data Structures Credits: 4
  • CMPSC 104 - Document Engineering Credits: 4

Core

Take all of the following four courses (16 credits):

  • CMPSC 201 - Programming Languages Credits: 4
  • CMPSC 203 - Software Engineering Credits: 4
  • CMPSC 302 - Web Design Credits: 4
  • CMPSC 404 - Web Applications Credits: 4

Electives

Take two of the following courses (8 credits):

  • CMPSC 305 - Database Systems Credits: 4
  • CMPSC 400 - Operating Systems Credits: 4
  • CMPSC 403 - Computer Security Credits: 4
  • CMPSC 303 - Artificial Intelligence Credits: 4

Project

Take all of the following three courses (12 credits):

  • CMPSC 580 - Junior Seminar Credits: 4
  • SE 600 - Senior Thesis I Credits: 4
  • SE 610 - Senior Thesis II Credits: 4

Software Engineering Minor

Students who minor in Software Engineering may not major in Computer Science, Data Science, or Informatics.

The minor in Software Engineering requires the completion of at least 24 semester hours of coursework, as outlined below.

Take all three of the following courses (12 credits):

  • CMPSC 100 - Computational Expression Credits: 4
  • CMPSC 101 - Data Structures Credits: 4
  • CMPSC 203 - Software Engineering Credits: 4

Take one of the following courses (4 credits):

  • CMPSC 201 - Programming Languages Credits: 4
  • CMPSC 302 - Web Design Credits: 4
  • CMPSC 404 - Web Applications Credits: 4

Take two of the following courses (8 credits):

  • CMPSC 400 - Operating Systems Credits: 4
  • CMPSC 403 - Computer Security Credits: 4
  • CMPSC 303 - Artificial Intelligence Credits: 4
  • CMPSC 305 - Database Systems Credits: 4

Courses

Foundation

  • CMPSC 100 - Computational Expression

    Credits: 4

    An introduction to the principles of computer science with an emphasis on creative expression through the medium of a programming language. Participating in hands-on activities that often require teamwork, students learn the computational structures needed to solve problems and produce computational artifacts which address these problems in real-world contexts. Students also learn how to organize and document a program's source code so that it effectively communicates with the intended users and maintainers. Additionally, the introduction includes an overview of the discipline of computer science and computational thinking. During a weekly laboratory session students use industry-grade technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: none.

    Distribution Requirements: ME, SP.

  • CMPSC 101 - Data Structures

    Credits: 4

    A continuation of CMPSC 100 with an emphasis on implementing, using, and evaluating the computational structures needed to efficiently store and retrieve digital data. Participating in hands-on activities that often require teamwork, students create data structures and algorithms whose correctness and performance they study through proofs and experimentation. Students continue to refine their ability to organize and document a program’s source code so that it effectively communicates with the intended users and maintainers. During a weekly laboratory session, students use state-of-the-art technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 100 or permission of the instructor.

    Distribution Requirements: QR, SP.

  • CMPSC 102 - Discrete Structures

    Credits: 4

    An introduction to the foundations of computer science with an emphasis on understanding the abstract structures used to represent discrete objects. Participating in hands-on activities that often require teamwork, students learn the computational methods and logical principles that they need to create and manipulate discrete objects in a programming environment. Students also learn how to write, organize, and document a program’s source code so that it is easily accessible to intended users of varied backgrounds. During a weekly laboratory session students use state-of-the-art technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 100.

    Distribution Requirements: QR, SP.

  • CMPSC 104 - Document Engineering

    Credits: 4

    An introduction to creation of effective documents and documentation using industry-standard approaches to creating and treating “documentation as code.” Participating in project-based and hands-on activities, students create purpose-driven digital writing with special attention to forms, formats, and conventions expected of contemporary technical communication. Students also gain experience with creating collaborative and ethically-consistent content working in a team-based setting. During a weekly laboratory session students employ contemporary software tools to complete technical documentation projects, reporting on their results through both written reflections and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: none.

    Distribution Requirements: HE, SP.

  • CMPSC 105 - Data Exploration

    Credits: 4

    An introduction to the methods of collecting, exploring, transforming and visualizing data for storytelling. Often participating in team-based and hands-on activities, students learn how to use web platforms and dashboards to acquire, explore and investigate data to generate summarized key data insights using visual techniques. Students also apply open-source programming language to discover patterns in the data, test hypotheses, and check assumptions using graphical representations. During a weekly laboratory session, students employ cutting-edge software tools to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: none.

    Distribution Requirements: QR, SP.

Core

  • CMPSC 200 - Computer Organization

    Credits: 4

    A study of the low-level operation of computer systems. Participating in hands-on activities that often require teamwork, students investigate how computers process instructions in modern computers as information is encoded, stored, and executed in a machine's physical structures. In addition to learning how to program in assembly and machine languages, students investigate the design and logical operation of processors and the mathematics of machine computation. During a weekly laboratory session, students use state-of-the-art technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 102.

    Distribution Requirements: QR, SP.

  • CMPSC 201 - Programming Languages

    Credits: 4

    A study of the fundamental concepts that arise in different programming language paradigms. Students learn how programming languages are designed and implemented, and how these factors affect the overall usability, performance, and effectiveness of computer software. Participating in hands-on activities that often require teamwork, students gain experience in leveraging the styles and features of programming languages to implement and evaluate correct and efficient computer software. During a weekly laboratory session, students use state-of-the-art technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101 or CMPSC 102.

    Distribution Requirements: QR, SP.

  • CMPSC 202 - Algorithm Analysis

    Credits: 4

    A study of fundamental methods for designing and implementing algorithms and analyzing their efficiency. While developing expertise in select models of computation and the key mathematical and experimental approaches to studying algorithm efficiency, students investigate different types of algorithms through hands-on activities that often require teamwork. Students also learn how to determine whether a problem can be efficiently solved by an algorithm that is implemented as a computer program. During a weekly laboratory session students use state-of-the-art technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101 or CMPSC 102.

    Distribution Requirements: QR, SP.

  • CMPSC 203 - Software Engineering

    Credits: 4

    A human-centric study of the principles used during the engineering of high-quality software systems. In addition to examining the human behaviors and social processes undergirding software development methodologies, students participate in teams tasked with designing, developing, and delivering a significant software application for a customer. During a weekly laboratory session, students use state-of-the-art software engineering, management, and communication tools to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101.

    Distribution Requirements: SB, SP.

  • CMPSC 204 - Theoretical Machines

    Credits: 4

    A study of theoretical computer science concepts that addresses both the fundamental nature and limitations of computation and the ways in which to practically apply these insights. While using a machine-centered abstraction of computation implemented in a general-purpose programming language, students investigate what is computable and explore the categories and complexity of computational problems. Participating in hands-on activities that often require teamwork, students gain experience in the use of a programming language to characterize a problem solving strategy. During a weekly laboratory session, students use industry-grade technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 102.

    Distribution Requirements: SP, QR.

  • CMPSC 301 - Data Science

    Credits: 4

    A study of computational methods of data analysis with an emphasis on understanding and reflecting on the social, cultural, and political issues surrounding data and its interrogation. Participating in hands-on activities that often require teamwork, students study, design, and implement analytics software and learn how to build predictive models with foundational machine learning algorithms to extract knowledge from various sources of data. Students also investigate the biases, discriminatory views, and stereotypes that may be present during the collection and analysis of data, reflecting on the ethical implications of using the resulting machine learning techniques. During a weekly laboratory session, students use industry-grade open source statistical software to complete projects, reporting on their findings through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101 or CMPSC 102.

    Distribution Requirements: QR, PD.

  • CMPSC 302 - Web Design

    Credits: 4

    An introduction to the principles and applications of web design with an emphasis on understanding intercultural perspectives that arise during the design, implementation, and maintenance of responsive, modern web sites. Participating in hands-on activities that often require teamwork, students learn the computational methods needed to create websites that are useful to people from different cultures and nationalities. Students also investigate approaches to developing efficient, accessible, and aesthetically pleasing web sites that adhere to the international standards set by the World Wide Web Consortium. During a weekly laboratory session students use industry-grade web development technologies to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 104.

    Distribution Requirements: IP, SP.

  • CMPSC 350 - Computational Narrative

    Credits: 4

    A study of the craft and deployment of procedurally-generated digital narratives, placing an emphasis on using data sources and computational methods as storytelling media. Students focus on critical, close reading of professional and student works while completing a single long-form work of their own. Topics include natural language processing (NLP), procedural illustration, computational constraint, and the development of conceptual documentary works. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101.

    Distribution Requirements: HE, ME.

  • CMPSC 404 - Web Applications

    Credits: 4

    An exploration of technologies and data relationships which power modern web applications. Participating in hands-on activities which require teamwork, students build web applications that incorporate the “full stack,” including databases, application programming interfaces (APIs), and public-facing web pages or mobile applications. Students develop a broad knowledge of different development approaches, languages, and design paradigms to learn advantages and disadvantages of technologies and frameworks. During weekly laboratory sessions, students participate in iterative design processes and report progress and technical details through written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 203 or CMPSC 302.

    Distribution Requirements: QR, SP.

  • CMPSC 405 - Deep Learning

    Credits: 4

    An interrogation of foundational capabilities, challenges and consequences of deep learning algorithms. Participating in hands-on activities that often require teamwork, students master theoretical concepts to build and train neural network architectures and learn how to improve them. Leveraging insights and tools from an industry partner, students also investigate real-world cases such as speech recognition, machine translation, computer vision, and natural language processing. During a weekly laboratory session students use advanced operating systems software to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 301.

    Distribution Requirements: QR, SP.

  • CMPSC 406 - Internet of Things

    Credits: 4

    An introduction to small-scale, purpose-built physical computational objects which embed sensors, integrate with networks, and process environmental signals. Exploring various industrial architectures, students develop devices that respond to physical stimuli and transmit data across networks to motivate additional device behavior and interactivity while considering human interaction design (HID) and “people-centered” principles that drive device design. During weekly laboratory sessions, students complete projects which focus on industry standards of data transmission and privacy in addition to optimizing device performance for real-time, high-availability applications. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 200.

    Distribution Requirements: SB, SP.

Electives

  • CMPSC 300 - Bioinformatics

    Credits: 4

    An introduction to the development and application of methods, from the computational and information sciences, for the investigation of biological phenomena. In this interdisciplinary course, students integrate computational techniques with biological knowledge to develop and use analytical tools for extracting, organizing, and interpreting information from genetic sequence data. Often participating in team-based and hands-on activities, students implement and apply useful bioinformatics algorithms. During a weekly laboratory session students employ cutting-edge software tools and programming environments to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: BIO 221 and FSBIO 201, or CMPSC 100.

    Distribution Requirements: QR, SP.

  • CMPSC 303 - Artificial Intelligence

    Credits: 4

    A study of the design and implementation of intelligent computer systems that can learn, plan, and solve problems autonomously. In addition to examining techniques for designing intelligent software agents, students investigate the social, political, and ethical implications of intelligent systems. Through hands-on activities that often require team-work, students explore the application of artificial intelligence methods in areas such as computer vision, natural language processing, and video game development. During a weekly laboratory session students use industry-grade technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101 or CMPSC 102.

    Distribution Requirements: QR, SP.

  • CMPSC 304 - Robotic Agents

    Credits: 4

    A study of the design and implementation of autonomous robotic systems that individually and cooperatively complete complex tasks. In addition to examining techniques for robot navigation, coordination, and manipulation, students learn how to apply the field's technologies to address the challenges facing local and global communities. Participating in hands-on activities that often require teamwork, students develop and evaluate several autonomous robot systems, while also reflecting on the civic issues surrounding the use of these systems. During a weekly laboratory session students use industry-grade technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101 or CMPSC 102.

    Distribution Requirements: CL, QR.

  • CMPSC 305 - Database Systems

    Credits: 4

    A study of the application and evaluation of database management systems. Participating in hands-on activities that often require teamwork, students design, implement, and deploy database systems that store interdisciplinary data sets. In addition to learning how to develop and assess interfaces for databases, students study the efficiency and effectiveness of alternative data management systems. During a weekly laboratory session students use industry-grade technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 101.

    Distribution Requirements: QR, SP.

  • CMPSC 400 - Operating Systems

    Credits: 4

    A study of the principles used in the design, implementation, and evaluation of operating systems. Participating in hands-on activities that often require teamwork, students create and assess components of an operating system that runs on modern computer hardware. Leveraging insights and tools from an industry partner, students also investigate the resource management, process scheduling, and file systems used in representative operating systems. During a weekly laboratory session students use advanced operating systems software to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 200 or CMPSC 201.

    Distribution Requirements: QR, SP.

  • CMPSC 403 - Computer Security

    Credits: 4

    A study of the principles used in the design, implementation, and evaluation of secure computer hardware and software. Participating in hands-on activities that often require teamwork, students assess the trade-offs in security policies and create software with efficient and effective security mechanisms. Leveraging insights and tools from an industry partner, students also investigate techniques for providing access control, secure channels, and intrusion detection. During a weekly laboratory session students use advanced security software to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 200 or CMPSC 201.

    Distribution Requirements: QR, SP.

  • CMPSC 529 - Internship: Computer Science

    Credits: 1-4

    Academic study completed in support of an internship experience with a partner institution. An Allegheny faculty member assigns and evaluates the academic work done by the student. May be repeated for credit. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: Permission of instructor.

    Distribution Requirements: none.

  • CMPSC 590 - Independent Study

    Credits: 1-4

    Individual research under the guidance of a member of the Department's faculty. A project proposal must be submitted to the Department and approved in the semester prior to the semester in which the student intends to register for the course. May be repeated for credit. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: Permission of instructor.

    Distribution Requirements: none.

Project

  • CMPSC 580 - Junior Seminar

    Credits: 4

    An investigation of select topics in computer and information science that prepares students for the completion of a senior project with the purpose of identifying knowledge gaps in the discipline. Students learn how to read scholarly papers, state and motivate research questions, create a software prototype or develop scholarly artifacts to address their findings, and collect and organize evidence for evaluating the outcome of their project. During a weekly laboratory session students use industry-grade technology to gain practical skills in technical writing, the presentation of technical concepts, and the production of an artifact. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: Permission of instructor.

    Distribution Requirements: none.

  • CMPSC 600 - Senior Thesis I

    Credits: 4

    Independent research in computer science culminating in the development of prototype or early draft of a computational artifact. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 580.

    Distribution Requirements: none.

  • CMPSC 610 - Senior Thesis II

    Credits: 4

    Continuation of independent research in computer science culminating in the development of and release of a computational artifact. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 600.

    Distribution Requirements: none.

  • DS 600 - Senior Thesis I

    Credits: 4

    Independent research in data science culminating in the development of a prototype or early draft of a computational artifact. Must be taken on the letter-grade basis. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 580.

    Distribution Requirements: none.

  • DS 610 - Senior Thesis II

    Credits: 4

    Continuation of independent research in data science culminating in the development of and release of a computational artifact. Must be taken on the letter-grade basis. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: DS 600.

    Distribution Requirements: none.

  • INFM 600 - Senior Project I

    Credits: 4

    Independent research in informatics culminating in the development of a prototype or early draft of a computational artifact. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 580 or other approved junior seminar and permission of the instructor.

    Distribution Requirements: none.

  • INFM 610 - Senior Project II

    Credits: 4

    Continuation of independent research in informatics culminating in the development of and release of a computational artifact. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: INFM 600 and permission of instructor.

    Distribution Requirements: none.

  • SE 600 - Senior Thesis I

    Credits: 4

    Independent research in software engineering culminating in the development of a prototype or early draft of a computational artifact. Must be taken on the letter-grade basis. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: CMPSC 580.

    Distribution Requirements: none.

  • SE 610 - Senior Thesis II

    Credits: 4

    Continuation of independent research in software engineering culminating in the development of and release of a computational artifact. Must be taken on the letter-grade basis. Must be taken on the letter-grade basis. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.

    Prerequisite: SE 600.

    Distribution Requirements: none.