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.

    Learning Outcomes:

    1. Apply Python programming fundamentals to execute and explain computer code that implements interactive, novel solutions to a variety of computable problems.
    2. Implement code consistent with industry-standard practices using professional-grade integrated development environments (IDEs), command-line tools, and version control systems.
    3. Analyze and suggest revisions to existing Python language code to add functionality or repair defects.
    4. Evaluate the practical and ethical implications of writing computer code and discuss the contexts, perceived effects, and impacts exerted on and by computer code as a cultural force or artifact.
    5. Design, describe, and implement original projects incorporating industry-standard practices and Python language fundamentals.
  • 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.

    Learning Outcomes:

    1. When solving a problem with a Python program, accurately describe data structures and algorithms and their inherent trade-offs.
    2. Use data structures and algorithms to correctly and efficiently solve a problem through the use of a Python program.
    3. Use empirical methods to characterize the performance of a Python program that uses data structures and algorithms.
    4. Use industry-standard practices, such as testing and debugging, and professional-grade integrated development environments (IDEs), command-line tools, and version control systems to implement Python programs.
    5. Implement Python programs and documentation that conforms to industry-standard formats and styles.
  • 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.

    Learning Outcomes:

    1. Justify the decision to select a suitable discrete structure for use when solving a problem with a computer program.
    2. Connect mathematical definitions, notations, and concepts of discrete structures to their computational representation by writing correct and efficient Python programs.
    3. Use the computational constructs of the Python programming language to perform mathematical operations.
    4. Correctly describe the properties of a given discrete structure and verify those properties through computational testing and/or mathematical proofs.
    5. Implement, test, and evaluate a Python function that performs data analysis using one or more sets of textual, numerical, categorical, binary, or combined data.
  • 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.

    Learning Outcomes:

    1. Describe and explain processes such as software installation or design for a variety of technical and non-technical audiences ranging from inexperienced to expert.
    2. Use professional-grade integrated development environments (IDEs), command-line tools, and version control systems to compose, edit, and deploy well-structured, web-ready documents and industry-standard documentation tools.
    3. Build automated publishing pipelines to format, check, and ensure both the uniformity and quality of digital documents.
    4. Identify and apply appropriate conventions of a variety of technical communities, tools, and computer languages to produce industry-consistent diagrams, summaries, and descriptions of technical topics or processes.
  • 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.

    Learning Outcomes:

    1. Develop hypotheses based on motivating problems and/or observations and identify appropriate data to address hypotheses.
    2. Identify and describe key elements in different types of data visualizations.
    3. Use web-based platforms to accurately present data sets through multiple visualizations.
    4. Use an open-source programming language to compute summary statistics and visualize key patterns in the data.
    5. Contribute to and present structured, web-based documentation that describes data exploration steps and visualization-based conclusions.

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.

    Learning Outcomes:

    1. Write a step-by-step description that explains how programs written in high-level computer programming languages execute through the use of lower-level computer circuitry.
    2. Identify the levels of the memory hierarchy and explain the implications of using the various levels to implement high-performance programs.
    3. Develop C and Assembly language programs that use the appropriate levels of the memory hierarchy and processor registers to create performant, executable programs and arithmetic logic units.
    4. Describe and use parallel processing techniques to increase a program’s performance and efficiency.
    5. Integrate hardware and software components using original C and Assembly language code to develop hardware-based, performant computational projects.
  • 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.

    Learning Outcomes:

    1. Correctly identify and describe the steps in the design and implementation of a programming language.
    2. Effectively use programming language constructs to design correct, efficient, and well-tested programs in multiple programming languages, including but not limited to Java.
    3. Interpret and use an existing programming language grammar.
    4. Design, implement, and evaluate a correct scanner and parser for a programming language.
    5. Using knowledge of the general principles of programming languages, correctly implement a computer program in a heretofore unknown programming language.
  • 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.

    Learning Outcomes:

    1. Correctly implement both well-established and custom data structures using a programming language so as to solve a problem with a computer program.
    2. Perform an asymptotic analysis of an algorithm to arrive at its correct worst-case time complexity class.
    3. Conduct experiments that measure the efficiency of different combinations of programming languages, data structures, and algorithms.
    4. Use both theoretical and experimental results to pick the data structure(s) and algorithm(s) that balance the trade-offs associated with correctly and efficiently solving a problem with a computer program.
    5. Effectively apply algorithmic problem solving techniques like searching, sorting, and memoization to correctly and efficiently solve a problem through the use of a computer program.
  • 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.

    Learning Outcomes:

    1. Effectively create a solution to a domain-specific problem delivered as a maintainable software system.
    2. Demonstrate competency in the theories, models, and practices of the project domains that require the engineering of software.
    3. Effectively manage and predict the cost, scope, and deadline of a software engineering project.
    4. Apply knowledge about the implementation of the Python programming language to create and use software engineering tools that support activities like testing and debugging.
    5. Use effective oral and written communication methods to explain both the technical and product-use details of a software artifact.
  • 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.

    Learning Outcomes:

    1. Use both intuitive analysis and theoretical proof techniques to correctly distinguish between problems that are tractable, intractable, and uncomputable.
    2. Correctly use one or more variants of the Turing machine (TM) abstraction to both describe and analyze the solution to a computational problem.
    3. Correctly use one or more variants of the finite statement machine (FSM) abstraction to describe and analyze the solution to a computational problem.
    4. Use a formal proof technique to correctly classify a problem according to whether or not it is in the P, NP, NP-Hard, and/or NP-Complete complexity class(es).
    5. Apply insights from theoretical proofs concerning the limits of either program feasibility or complexity to the implementation of both correct and efficient real-world Python programs.
  • 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.

    Learning Outcomes:

    1. Apply machine learning models to data sets using standard Python and R programming language libraries.
    2. Create and evaluate classification, regression, and classical neural network models for analytical and predictive tasks.
    3. Design, implement, and deploy a web-based dashboard that displays real-world data visualizations and its analysis.
    4. Describe the contemporary roles of power and difference as they relate to the knowledge derived from data sets and their analysis.
    5. Explore and explain both in writing and orally various types of data analysis methods used in various fields and the biases that may be present during data collection, analysis, and decision making.
  • 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.

    Learning Outcomes:

    1. Apply HTML, CSS, Markdown, and basic Javascript to develop well-structured, responsive World Wide Web Consortium (W3C) standards-compliant web sites.
    2. Evaluate and implement web accessibility measures consistent with the Web Content Accessibility Guidelines (WCAG) version 2 specification.
    3. Design front-end user experiences using accepted web design patterns, methods, and information structures.
    4. Identify and use strategies of successful visual rhetoric for the web.
    5. Compare and select web technologies such as static site generators or frameworks as appropriate candidates for building web sites.
  • 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.

    Learning Outcomes:

    1. Correctly describe and apply best practices of prompt engineering across a range of large language model (LLM) platforms to design successful prompts.
    2. Evaluate texts generated by language technologies by applying contemporary and historical language, technology, and information theory.
    3. Demonstrate and criticize systemic bias, ethical issues, and failure modes inherent in language technologies such as LLMs.
    4. Develop software to interact with language model application programmer interfaces (APIs).
    5. Create and justify a body of text products that leverage text-to-text, text-to-image, and other language model technologies.
  • 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.

    Learning Outcomes:

    1. Define the structure of the web application “stack” and describe the meaning and implications of implementing a “full stack” application.
    2. Explain the layers of the Transmission Control Protocol/Internet Protocol (TCP/IP) and describe their relationship to server-side and client-side web applications.
    3. Develop secure, reliable application programmer interfaces (APIs) using the Representational State Transfer (REST) or Simple Object Access Protocol (SOAP) specification(s).
    4. Model industry standard server security practices such as, but not limited to, firewall, web server, and database configuration.
    5. Select solution-appropriate open-source software to implement a “full stack” web application project using server-side and/or client-side rendering frameworks.
  • 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.

    Learning Outcomes:

    1. Apply concepts from calculus and linear algebra to create predictive models that use a deep neural network.
    2. Use Python to implement and interpret a multilayer neural network that can process various sources of data.
    3. Use an existing deep learning model in an application for predictive data analysis and communicate the results effectively in both written and oral formats.
    4. Evaluate, optimize, and improve the performance of a deep learning model with a focus on its ethical impact.
    5. Build, train, test, document, and deploy a new deep learning model in a software application.
  • 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.

    Learning Outcomes:

    1. Identify components of the Internet of Things (IoT) architecture and select the most appropriate IoT devices and sensors for an IoT application.
    2. Set up the electronic circuitry needed for IoT devices, and then collect and analyze data from IoT devices.
    3. Design, implement, test, and deploy an IoT system that is connected to cloud computing infrastructure while keeping human interaction in mind.
    4. Select an appropriate protocol for communication between IoT devices and secure the elements of the IoT device while considering issues of privacy.
    5. Use effective oral and written communication methods to explain the technical details of an IoT artifact.

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.

    Learning Outcomes:

    1. Correctly connect biological foundations, including the Central Dogma of Biology, DNA, genes, genomes, and gene expression, to computational study and bioinformatics
    2. Automatically collect and analyze biological data using a Python program.
    3. Use industry-standard, web-based and computational library-based tools to process, explore, examine, and analyze genetic data.
    4. Apply industry-standard bioinformatics algorithms to tasks such as sequence alignment, gene assembly, and protein modeling, thereby gaining insights from biological data.
    5. Communicate both technical and biological details of a bioinformatics artifact through effective oral and written communication methods.
  • 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.

    Learning Outcomes:

    1. Correctly implement an intelligent agent and accurately describe its properties.
    2. Correctly apply search algorithms to solve an agent-based problem.
    3. Design, implement, and assess an intelligent system for various artificial intelligence applications.
    4. Correctly explain and justify how a problem could be solved through the use of supervised, unsupervised, and/or reinforcement machine learning algorithms.
    5. Evaluate intelligent systems while considering their social, political, and ethical implications and communicate their outcomes in both written and oral forms.
  • 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.

    Learning Outcomes:

    1. Identify components of the robot and associate each part with its task in a complete robotic system.
    2. Design, implement, and test robotic applications for a wheeled, arm, and aerial robots.
    3. Demonstrate the use of a robot operating system (ROS) in simulation and in wheeled robots.
    4. Demonstrate actuating, sensing, locomotion, navigation, manipulation, and learning capabilities of robotic systems.
    5. Describe the ethical and social impact of robotics on public problems and participate in civic engagement activities with robots, while additionally reflecting on the nuances of public problems.
  • 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.

    Learning Outcomes:

    1. Correctly describe object-oriented data storage, low-level data storage, transactions and concurrency control, data warehousing and data mining.
    2. Design and implement SQL databases and formulate advanced structured queries to extract knowledge from databases.
    3. Implement Python programs to access databases, define and execute queries, and produce web-based visualizations of the data and query results.
    4. Create and/or use post-relational database management systems and contrast them with relational database systems.
    5. Clearly and persuasively communicate the results of database inquiries and critically examine and reflect on their ethical implications.
  • 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.

    Learning Outcomes:

    1. Correctly describe and use the process management and CPU scheduling modules in an operating system.
    2. Design, implement, and/or use a correct memory management module that can allocate and deallocate objects to a computer's memory.
    3. Correctly implement and, in a step-by-step fashion, describe the behavior of concurrent and/or parallel computer programs.
    4. Design and implement correct computer programs that use persistent storage modules, like block storage devices and file systems, to store varied types of data.
    5. Create and use benchmarking tools to experimentally characterize the performance and correctness of operating system modules and the software programs that use them.
  • 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.

    Learning Outcomes:

    1. Correctly identify the threats to an application's security and describe the suitable mitigation(s) for addressing the threats.
    2. Correctly apply security principles, memory management strategies, architecture and algorithmic principles, and cryptography in the modeling and implementation of security solutions.
    3. Correctly use hardware and/or software tools to diagnose and fix web and network security risks.
    4. Evaluate the effectiveness of various hardware and software systems with respect to computer security.
    5. Design, implement, document, test, and explain secure software with emphasis on social, political, legal, and ethical vulnerabilities.
  • 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.

    Learning Outcomes:

    1. Illustrate a component of a viable and appropriate open-source research project idea.
    2. Identify appropriate sources to motivate the research idea and determine research project objectives.
    3. Demonstrate feasibility of a research idea through an application of existing computational resources.
    4. Describe a research idea, its motivation, goals, and anticipated outcomes in writing.
    5. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews, and formal presentations.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate proposal for an independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and two chapters of a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews and formal presentations.
    4. Produce and document a working prototype of computational artifact.
    5. Evaluate the produced prototype and reflect on theoretical, practical, ethical and social impact of the proposed artifact.
    6. Produce an original project that includes integration of theory and practice or software and hardware.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews, and formal presentations.
    4. Produce and document a working and completed computational artifact.
    5. Evaluate the produced artifact and reflect on theoretical, practical, ethical and social impact of the developed artifact.
    6. Produce an original project that includes integration of theory and practice or software and hardware.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate proposal for an independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and two chapters of a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews and formal presentations.
    4. Produce and document a working prototype of a data-oriented artifact.
    5. Evaluate the produced prototype and reflect on theoretical, practical, ethical and social impact of the proposed artifact.
    6. Produce an original project that uses a large, complex data set to create a web dashboard or extend an existing data science framework via analysis.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews and formal presentations.
    4. Produce and document a working and completed data-oriented artifact.
    5. Evaluate the produced artifact and reflect on theoretical, practical, ethical and social impact of the developed artifact.
    6. Produce an original project that uses a large, complex data set to create a web dashboard or extend an existing data science framework via analysis.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate proposal for an independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and two chapters of a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews and formal presentations.
    4. Produce and document a working prototype of an information-informed artifact.
    5. Evaluate the produced prototype and reflect on theoretical, practical, ethical and social impact of the proposed artifact.
    6. Produce an original project that integrates multiple disciplines and provides critical engagement of impact of technology on various communities.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews and formal presentations.
    4. Produce and document a working and completed information-informed artifact.
    5. Evaluate the produced artifact and reflect on theoretical, practical, ethical and social impact of the developed artifact.
    6. Produce an original project that integrates multiple disciplines and provides critical engagement of impact of technology on various communities.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate proposal for an independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and two chapters of a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews, and formal presentations.
    4. Produce and document a working prototype of an engineered software artifact.
    5. Evaluate the produced prototype and reflect on theoretical, practical, ethical, and social impact of the produced artifact.
    6. Produce an original software project that is working, well-tested, and deployed into production use.
  • 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.

    Learning Outcomes:

    1. Develop a viable and appropriate independent and open-source research project.
    2. Describe a research process, its methods, and outcomes in writing in the form of an incremental research notebook and a formal thesis document.
    3. Present and communicate complex ideas in a variety of media through both informal discussions, peer reviews and formal presentations.
    4. Produce and document a working, completed, engineered software artifact.
    5. Evaluate the produced prototype and reflect on theoretical, practical, ethical, and social impact of the produced artifact.
    6. Produce an original software project that is working, well-tested, and deployed into production use.