Advising Handbook 2022-2023 
    
    Jun 20, 2024  
Advising Handbook 2022-2023 [ARCHIVED CATALOG]

Computer Science (First Year and Transfer)


Computer Science
Academic Bulletin

Area of Study: Mathematics and Natural Sciences
Major/Minor Exclusions:
A student majoring in Computer Science may not double major in Integrative Informatics.
A student minoring in Computer Science may not major in Integrative Informatics.

Introduction
The details about the Computer Science Major and Minor described in detail at the following web site: https://www.cs.allegheny.edu/teaching/bulletin/

The aforementioned web site is regularly updated. However, the details about the old curriculum (pre-Fall 2018), which included both the Computer Science and Applied Computing Majors, is still available at this site: https://www.cs.allegheny.edu/teaching/bulletin/archive/

Laptops
To ensure both that the software development experience in a Computer Science course closely mirrors real-world practice and that we most effectively use the classroom furniture, we now invite all students to use their own laptops during class, laboratory, and practical sessions. Desktop computers are not available in the teaching and lab spaces in Alden Hall. 

To ensure that every student has a laptop that will run the required software to complete work in computer science course, we encourage all students registered for computer sciences courses to visit the following web site to learn about department approved laptops:https://www.cs.allegheny.edu/resources/laptops/

The department lends laptops to students who do not have an appropriate laptop for computer science work. To ensure that there are sufficient laptops for students to use when completing their class work, students enrolled in computer science courses are asked to complete a survey sent by the department prior to the start of each semester. Students will receive an invitation to complete this survey from either the Chair of Computer Science or from the instructor who is teaching their Computer Science course.

 

Enrollment in Computer Science Courses for Fall 2022

Introductory Courses (CMPSC 100, 101, and 102)
All three introductory courses are required for a computer science major.

CMPSC 100, Computational Expression:
We offer one section of CMPSC 100, Computational Expression, in Fall 2022. This is the courses that most students should take as their first course in Computer Science. If the class fills, entrance advisers should contact the instructor, Doug Luman (dluman@allegheny.edu). The instructor may add students to this course beyond the set limit if the room capacity and software and hardware availability permit doing so.  

CMPSC 101, Computational Expression:
Interested students and their entrance advisors can contact Gregory Kapfhammer (gkapfham@allegheny.edu) if they have taken an AP Computer Science Examination (and scored a 3, 4, or 5) or if they have some background knowledge in programming in Java or Python. The instructor may add students to this course beyond the set limit if the room capacity and software and hardware availability permit doing so.

CMPSC 102, Discrete Structures:
Interested students and their entrance advisors can contact Oliver Bonham-Carter (obonhamcarter@allegheny.edu) if they have taken an AP Computer Science Examination (and scored a 3, 4, or 5) or if they have some background knowledge in Java or Python. The instructor may add students to this course beyond the set limit if the room capacity and software and hardware availability permit doing so. 

Programming Languages Used in the Introductory Courses in 2020-2021 Academic Year:

  • CMPSC 100: Python
  • CMPSC 101: Python
  • CMPSC 102: Python

Fundamentals Courses (CMPSC 200 and 203)
CMPSC 200 and 20e are taught during the Fall 2022 semester. All of the fundamentals courses have two 100-level Computer Science courses as a prerequisite and are thus not ideal courses for incoming students unless they have taken prior courses in Computer Science. If a student wants to enroll in one or both of these classes, they should contact Department Chair Janyl Jumadionva (jjumadinova@allegheny.edu) as recent staffing changes may require the cancellation or rescheduling of at least one of these courses. However, the Department of Computer Science plans to offer both of these courses again during the Fall 2023 semester.

Programming Languages Used in the Fundamentals Courses:

  • CMPSC 200: C and Assembly
  • CMPSC 20e: Python

Applications Courses (CMPSC 300 and 311)
These courses are unlikely to be suitable for incoming first-year students. However, they may be a good fit for incoming transfer students. Students interested in CMPSC 300 can contact Oliver Bonham-Carter (obonhamcarter@allegheny.edu) and students interested in 311 should contact Janyl Jumadinova (jjumadinova@allegheny.edu) to see if they can be added to these courses. Students should also contact Department Chair Janyl Jumadinova (jjumadinova@allegheny.edu) as recent staffing changes may require the cancellation or rescheduling of at least one of these courses.

Programming Languages Used in the Application Courses: 

  • CMPSC 300: Python and R
  • CMPSC 311: Python, Java, sometimes C/C++

Software Innovation Course (CMPSC 480):
The prerequisite for CMPSC 480 is CMPSC 101 and thus this course is unlikely to be suitable for most of the incoming first-year students. However, certain students with prior computer science experience who want to learn how to effectively develop and publicly release innovative software are encouraged to consider enrolling in this course. Since the class is currently full and will be over-enrolled, interested students should contact Doug Luman (dluman@allegheny.edu) to see if they can be added to the course. The follow-on Software Innovation course, CMPSC 481, will be taught during the Spring 2023 semester. The Department of Computer Science plans to offer CMPSC 480 again during the Fall 2023 semester.

Programming Languages Used in the Software Innovation Course:

  • CMPSC 480: Java, Python, and Markdown

Meeting Student Demand for Computer Science Courses:
If student interest goes beyond the room capacity in which a course meets, we will collaborate with the Provost, Registrar, entrance advisers, and incoming students to ensure that, whenever possible, students can take an introductory course in their first or second semester. For instance, if a certain course is heavily over-enrolled then it may be possible to swap its room with another course at the same time that is full or lightly over-enrolled. Alternatively, we will consider student proposals for course substitutions that enable progress towards the completion of a degree requirement. Additionally, with the assistance of entrance advisors, we can record the names of students who are not able to add a computer science course in their first semester and reserve them a spot in the course when it is offered next time. Please contact a course instructor and the chair for assistance. The faculty in Computer Science have already planned a tentative schedule of course offerings up to the Spring 2024 semester. Please contact the chair for read-only access to this Google Spreadsheet.

Important Notes About the Major in Computer Science

  • The major in Computer Science requires the successful completion of at least 52 semester hours in Computer Science. To graduate with a major in Computer Science, a student must have an earned GPA of at least 2.0 in the required Computer Science and other courses presented for the major. For the new Computer Science major, at most one of CMPSC 100 or 102 may be presented for the major on a Credit/No Credit grade basis. Students who have questions about calculating their major GPA can contact their academic adviser or the chair in Computer Science.
  • 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. In consultation with their academic adviser, students who major in Computer Science may incorporate Mathematics courses into their study through the following substitutions:
    • Math 205 as a substitute for the combination of CMPSC 480 and CMPSC 481
    • Math 320, Math 330, Math 345, or Math 370 as a substitute for one of the required 300-level CMPSC courses
  • For students who matriculated before Fall 2016, all Computer Science courses with a laboratory count as a laboratory course in the Natural Sciences for the purpose of satisfying the College distribution requirement. Starting with the Fall 2018 semester, all four-credit Computer Science courses have a laboratory session that meets once per week in the afternoon. The Academic Bulletin contains details about the distribution requirements for each Computer Science course.
  • The Application Courses in Computer Science are divided into two distinct categories. Please note that students are required to take at least one course from each of the following categories:
    • Analyze and Visualize:
      •     CMPSC 300 - Bioinformatics
      •     CMPSC 301 - Data Analytics
      •     CMPSC 302 - Web Development
    • Implement and Integrate:
      •     CMPSC 310 - Artificial Intelligence
      •     CMPSC 311 - Robotic Agents
      •     CMPSC 312 - Database Systems
  • CMPSC 300 is the only course in the “Analyze and Visualize” category that has a prerequisite that is not FS 102 or permission of the instructor. All of the courses in the “Implement and Integrate” category have CMPSC 101 or CMPSC 102 as the prerequisite.

Additional, regularly updated, details about the Computer Science major are always available at: https://www.cs.allegheny.edu/teaching/bulletin/

Suggested Schedule for a Major in Computer Science

We do not recommend taking more than two computer science courses with a lab (with an exception of the Junior seminar) in one semester. Taking an Innovation Seminar, in addition to two 100/200/300/400 computer science courses with a lab is appropriate.
 

  Fall Academic Semester Spring Academic Semester
First Year CMPSC 100 CMPSC 101
CMPSC 102
Sophomore Two of the following:
CMPSC 200
CMPSC 201
CMPSC 3XX
Two of the Following:
CMPSC 202
CMPSC 203
CMPSC 3XX
Junior One or two CMPSC 200/300 courses (take at most two)
CMPSC 480 (2 credits)
One or two CMPSC 200/300 courses (take at most two)
CMPSC 580
CMPSC 481 (2 credits)
Senior CMPSC 4XX
CMPSC 600
CMPSC 610

 

Students who declare a Computer Science major are encouraged to regularly meet with their academic adviser to verify that they are making suitable progress towards the completion of their degree requirements. To ensure that they are the most competitive for either a position in industry or admission to graduate school, Computer Science majors should, after consulting with their academic adviser, consider taking at least one additional Applications course or one additional Advanced course.

Minors in Computer Science

The minor in Computer Science requires the completion of at least 20 semester hours of coursework in Computer Science including:

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

A minor must also include an additional twelve semester credit hours of Computer Science courses at or above the 200 level. When advising students, please remember that at most one of CMPSC 100 or 102 may be presented for the major on a Credit/No Credit grade basis. Additionally, students who minor in Computer Science may not major in Integrative Informatics.

The Computer Science minor has the following minor course sequences in a wide variety of areas:

Computer Languages

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 101 - Data Abstraction (Credits: 4)
  •     CMPSC 201 - Programming Languages (Credits: 4)
  •     CMPSC 312 - Database Systems (Credits: 4)
  •     CMPSC 403 - Computer Security (Credits: 4)

Computer Security

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 102 - Discrete Structures (Credits: 4)
  •     CMPSC 200 - Computer Organization (Credits: 4)
  •     CMPSC 201 - Programming Languages (Credits: 4)
  •     CMPSC 403 - Computer Security (Credits: 4)

Computer Systems

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 101 - Data Abstraction (Credits: 4)
  •     CMPSC 102 - Discrete Structures (Credits: 4)
  •     CMPSC 200 - Computer Organization (Credits: 4)
  •     CMPSC 400 - Operating Systems (Credits: 4)

Data Analysis

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 102 - Discrete Structures (Credits: 4)
  •     CMPSC 202 - Algorithm Analysis (Credits: 4)
  •     CMPSC 300 - Bioinformatics (Credits: 4)
  •     CMPSC 301 - Data Analytics (Credits: 4)

Data Management

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 101 - Data Abstraction (Credits: 4)
  •     CMPSC 102 - Discrete Structures (Credits: 4)
  •     CMPSC 201 - Programming Languages (Credits: 4)
  •     CMPSC 312 - Database Systems (Credits: 4)

Distributed Computing

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 102 - Discrete Structures (Credits: 4)
  •     CMPSC 202 - Algorithm Analysis (Credits: 4)
  •     CMPSC 302 - Web Development (Credits: 4)
  •     CMPSC 402 - Cloud Computing (Credits: 4)

Intelligent Systems

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 101 - Data Abstraction (Credits: 4)
  •     CMPSC 102 - Discrete Structures (Credits: 4)
  •     CMPSC 202 - Algorithm Analysis (Credits: 4)
  •     CMPSC 310 - Artificial Intelligence (Credits: 4)

Robotic Systems

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 101 - Data Abstraction (Credits: 4)
  •     CMPSC 201 - Programming Languages (Credits: 4)
  •     CMPSC 310 - Artificial Intelligence (Credits: 4)
  •     CMPSC 311 - Robotic Agents (Credits: 4)

Software Development

  •     CMPSC 100 - Computational Expression (Credits: 4)
  •     CMPSC 101 - Data Abstraction (Credits: 4)
  •     CMPSC 201 - Programming Languages (Credits: 4)
  •     CMPSC 203 - Software Engineering (Credits: 4)
  •     CMPSC 480 - Software Innovation I (Credits: 2)
  •     CMPSC 481 - Software Innovation II (Credits: 2)

Web Design

  1.     CMPSC 100 - Computational Expression (Credits: 4)
  2.     CMPSC 101 - Data Abstraction (Credits: 4)
  3.     CMPSC 203 - Software Engineering (Credits: 4)
  4.     CMPSC 301 - Data Analytics (Credits: 4)
  5.     CMPSC 302 - Web Development (Credits: 4)

Cooperative Programs

Students are encouraged to read the sections of the Academic Bulletin concerning cooperative opportunities such as the Carnegie Mellon’s (CMU’s) Accelerated Master’s Program in Information Systems Management or one of the 3-2 engineering programs. It is likely that participation in such academic programs will require a more intense program of study during the first three years of study.

Computer Science Learning Outcomes

Students who successfully complete either a major or a minor in the Computer Science are expected to demonstrate the successful attainment of learning outcomes in each of the following categories:

Introduction:

  1. Understands the basic and practical foundations of computer science (e.g., algorithms, data types, conditional logic, recursion, procedural programming concepts, object-oriented programming principles);
  2. Knows how to use standard development tools to implement software solutions to problems.

Fundamentals:

  1. Can design, implement, evaluate, improve, and document an algorithmic solution to a problem;
  2. Understands the mutually beneficial connections between (i) computer hardware and software and (ii) theoretical computer science and practical software development.

Applications:

  1. Understands the basics of application areas such as data analytics, data management, artificial intelligence, and web development;
  2. Can apply key concepts from these application areas to formulate and solve problems and evaluate solutions implemented as computer programs.

Advanced:

  1. Understands and can extend advanced concepts in areas such as computer security, operating systems, and cloud computing;
  2. Knows how to apply key ideas from these advanced topics to formulate and solve problems and evaluate solutions implemented as complete, efficient, and effective computer systems.

Independent Research:

  1. Demonstrates critical thinking abilities and effective written and oral communication skills;
  2. Can identify, analyze, and use sources in both the technical and research literature.

Professional Development:

Understands how to work in a team and evidences the willingness to commit to lifelong learning.

 

Information for Transfer Students


Three Year Computer Science Academic Plan

Transferring after one year

We expect students transferring to Allegheny after attending one year at another institution may have one introductory course; in some cases, they may also be transferring in a second or third introductory course and/or a 300-level course. We do not recommend taking more than two computer science courses with a lab (with an exception of the Junior Seminar) in one semester. Taking an Innovation Seminar, in addition to two 100/200/300/400 computer science courses with a lab is appropriate.

Below you will find a roadmap of the Computer Science major and minor requirements as you make progress towards your degree at Allegheny College

  MAJORS MINORS
Year 1 at
Allegheny
  • Complete remaining CMPSC 100-level introductory courses if necessary (majors need 3: CMPSC 100, 101, and 102)
  • Take 1-2 CMPSC 200-level course(s)
  • Optionally, take 1 CMPSC 300-level course
  • Complete CMPSC 100-level introductory course if necessary (minors need 2: CMPSC 100 and CMPSC 101 or 102)
  • Take 1 additional course at CMPSC 200/300-level
Year 2 at
Allegheny
  • Take 2-3 CMPSC 200-level courses
  • Take 1-2 CMPSC 300-level courses (majors need 2, one in each category)
  • Take Innovation Seminars (CMPSC 480 in the fall semester and CMPSC 481 in the spring semester)
  • Enroll in CMPSC 580, Junior Seminar (spring semester only)
  • Take 1-2 CMPSC 200/300/400-level courses (minors need 12 credits at or above 200-level)
Year 3 at 
Allegheny
  • Complete remaining CMPSC 200/300-level courses if necessary
  • Take a CMPSC 400-level Advanced course in the fall semester (only offered in the fall)
  • Take CMPSC 600, Senior Thesis I in the fall semester
  • Take CMPSC 610, Senior Thesis II in the spring semester
  • Take any remaining CMPSC courses to reach major requirement of 52 credits
  • Take any remaining CMPSC courses to reach minor requirement of 20 credits

 

Two Year Computer Science Academic Plan

Transferring after two years

We expect students transferring to Allegheny after attending two years at another institution may have at least two introductory courses and may also be transferring in a 200-level and/or a 300-level course. WE do not recommend taking more than two computer science courses with a lab (with an exception of the Junior Seminar) in one semester. Taking an Innovation Seminar, in addition to two 100/200/300/400 computer science courses with a lab is appropriate.

Below you will find a road map of the Computer Science major and minor requirements as you make progress toward your degree at Allegheny College.

  MAJORS MINORS
Year 1 at
Allegheny
  • Complete remaining CMPSC 100-level introductory courses if necessary in the first semester (majors need 3: CMPSC 100, 101, and 102)
  • Take 2-3 CMPSC 200-level courses
  • Optionally, take 1 CMPSC 300-level course
  • Enroll in CMPSC 580, Junior Seminar (spring semester only)
  • Complete CMPSC 100-level introductory course if necessary (minors need 2: CMPSC 100 and CMPSC 101 or 102)
  • Take 1-2 additional courses at the CMPSC 200/300-level
Year 2 at
Allegheny
  • Take 1-2 CMPSC 200-level courses
  • Take 1-2 CMPSC 300-level courses (majors need 2, one in each category)
  • Take Innovation Seminars (CMPSC 480 in the fall semester and CMPSC 481 in the spring semester)
  • Take a CMPSC 400-level Advanced course in the fall semester (only offered in the fall)
  • Take CMPSC 600, Senior Thesis I in the fall semester
  • Take CMPSC 610, Senior Thesis II in the spring semester
  • Take any remaining CMPSC courses to reach major requirement of 52 credits
  • Take 1-2 CMPSC 200/300/400-level courses (minors need 12 credits at or above the 200-level)
  • Take any remaining CMPSC courses to reach minor requirement of 20 credits

Issues to consider for transfer credits:

  • A course from another institution is considered for transfer for all courses in computer science except for the Software Innovation seminars, Junior seminar and senior thesis courses. Transfer courses will be applied to one or more computer science categories on a case-by-case basis.
  • It is common for the similar sounding application courses to have varying degrees of “depth” across different institutions as evident by the varying or lack of prerequisites and topics covered. Transfer credit is accepted only for courses at approximately the same level of topic “depth” as the Allegheny College courses.
  • In addition to computer science, transfer credit is accepted from programs related to computer science such as information science and information technology as long as the course to be transferred aligns with the computer science course at Allegheny College and includes a significant programming/software development component.
  • The most common courses that students transfer to Allegheny College are at the introductory level: CMPSC 100 and 101.
  • All computer science courses use version control software (Git), continuous integration (GitHub Actions) and most courses beyond CMPSC 100 use a container-based system (Docker). Transfer students unfamiliar with these technologies should reach out to the Chair of the department to be enrolled in a short course teaching these skills.
  • All computer science introductory courses at Allegheny College are taught in Python programming languages. Transfer students unfamiliar with Python should reach out to the Chair of the department to receive adequate support.