Undergraduate Advising FAQ

Click on a question below to toggle it's answer open/closed.

Early registration for Spring 2025 opens on Wednesday, November 1, and closes on Tuesday, November 14. (Schedule adjustment period is Wednesday, November 15 through January 17, 2025.) Eligible undergraduate students may view their registration appointment time in AppalNet/Web Self-Service ( AppalNet) by clicking on the 'Student' tab and then 'Registration'. Access to the registration system is based on your earned hours (institutional and transfer).

The registrar maintains a website that allows a Class Schedule Search

Note: Some of the courses listed below will be offered online.

Summer Session 1 Courses

CS 1100: Discrete Mathematics - Danielle Lapensee-Rankine (synchronous online)
study of discrete mathematics as it applies to computer science. Concepts covered include number systems, sets, logic, Boolean algebra, digital circuits, combinatorics, relations, functions, vectors, matrices, graphs, and induction proofs. Prerequisite: MAT 1025 or equivalent with a grade of "C-" (1.7) or higher or satisfactory. Calculus Readiness Test score.

CS 2490: Introduction to Theoretical Computer Science - Val Lapensee-Rankine
This course provides a rigorous but intuitive introduction to computer theory. Topics covered include formal languages, regular expressions, finite automata, grammars, pushdown automata, and Turing machines. Prerequisite: CS 1100 and CS 2440 with a minimum grade of "C" (2.0) in each.

The next two courses count as CS electives.

CS 3534: Introduction to Robotics - Yeganeh Madadi

CS 3543: Theory of Computation - Pierre Cagne (synchronous online)
This course describes models of computation, polynomial time, undecidability and intractability, time and space complexity, through a rigorous treatment of Turing machines. Prerequite: CS 2490.

Ten week Courses

These courses will be offered across both summer sessions. All three will be offered online.

CS 1440: Computer Science I - Abdelbaset Hamza (synchronous online)
A first programming course using an object-oriented language. Emphasis is placed on problem-solving and appropriate programming standards. Topics include: classes, objects, data types, expressions, conditional statements, loops, strings, arrays, collections, debugging, inheritance, and polymorphism. Lecture three hours, laboratory two hours. Students with doubts about their mathematics and computing background should consider taking CS 1425 first. Prerequisite: MAT 1025 or equivalent with a minimum grade of "C-" (1.7) or higher or satisfactory Calculus Readiness Test score.

CS 2440: Computer Science II - Courtney Dixon (synchronous online)
This course follows CS 1440 - Computer Science I (4). The course introduces students to advanced programming concepts through the development of small to medium sized projects using software component libraries. Topics emphasize conceptual understanding and applications and include inheritance, polymorphism, recursion, interfaces, collections, stream I/O, exceptions, graphical interfaces, and threads. Lecture three hours, laboratory two hours. Prerequisite: CS 1440 or CS 2435 with a minimum grade of "C" (2.0). Corequisite: CS 1100.

CS 2450: Introduction to Computer Systems - Joel Swanson (synchronous online)
This course includes data representation, digital logic, digital circuits, instruction set architecture, and assembly language programming. Prerequisite: CS 1100 and CS 2440 with a minimum grade of "C" (2.0) in each.

Summer Session 2 Courses

CS 3430: Database - Tinghao Feng
This course covers the design, organization, representation, and manipulation of databases. Topics include the relational model, data definition, data manipulation, queries (SQL), communication and representation (XML), design concepts, security, and integrity. Prerequisite: CS 2440 with a grade of "C" (2.0) or higher.

CS 3460: Data Structures - Mohammad Ali Javidian
Data Structures is the study of organizing data in memory in order to access them efficiently. In this class, we study data structures for storing sets and sequences in the form of arrays, linked lists, stacks, queues, priority queues, hash tables, and binary search trees. We also learn the art of abstraction by treating these data structures as black boxes to solve more complex algorithms. Data structures are vital in almost every field of computer science, and we cover applications in text compression, security, parsing, and more. We learn to model certain problems as a graph, and study graph algorithms for traversing and computing shortest paths. Prerequisite: C_S 2490 with a minimum grade of ā€œCā€ (2.0).

CS 3667: Software Engineering - Nazia Sharmin (synchronous online)
This course covers the design and implementation of software systems. Topics include requirements analysis, object design, system design, frameworks and patterns, and implementation and testing issues. Prerequisite: CS 2440 with a grade of "C" (2.0) or higher.

The next course counts as a CS elective.

CS 3537: Program Analysis - Mark Hills
The focus of the course will be on static program analysis, especially focused on tasks related to program comprehension/understanding. The course will start with an overview of the needed background in programming languages, especially focused on concepts needed to understand language front-ends. After this, the course will include a mixture of paper discussions and short lectures to provide information on topics discussed in the papers. Students will complete a short project, which will either be a replication based on existing work, or a new project in collaboration with the instructor. Projects will most likely be individual or two-person teams, depending on the topics chosen, the number of students, and student interest. Students will be expected to present their work during the course. Prerequisite: CS 3460 with a minimum grade of "C"

All required CS courses are offered every fall and spring semester. In addition to required courses, CS graduates need to earn 12 hours of CS electives. (Three of those hours can be earned while completing an internship. See FAQ about Internships.)

One or more Data Science courses are offered every semester. (See FAQ the Data Science Certificate.) In Spring 2025, these Data Science courses will be be offered:

CS 3435: Data Collection & Visualization - Tinghao Feng
This class provides students an opportunity to develop skills to acces and organize data, scrape data from websites, determine and improve da and produce interactive graphical representations to help discover pat and answer questions. A class project will provide students the opport to apply their learning to a disciplinary problem. Prerequisites: CS 2440 or CS 2435.

Note: CS 3435 does not count as a CS elective. It does count toward the 120 hours needed to graduate.

CS 4542: Deep Learning - R. Parry
This course counts for the CS 4755: Applied Machine Learning requirement for the Data Science certificate.

Note: CS 4542 also counts as a CS elective. Undergraduate students need 12 hours of CS electives to earn a CS degree.

CS elective courses vary semester by semester. The catalog may indicate a course is offered in the fall of even numbered years, but that information is not always accurate. Consult this Registrar page for courses that are actually offered in a term.

Some of the courses described below are selected topics courses. Selected topics courses also count as CS electives.

CS 2531: Computational Reasoning - Patricia Johann
From the most elementary hardware to the most sophisticated software, all of computer science is based in discrete mathematics. This course covers a range of topics in discrete mathematics that are particularly important in computer science, emphasizing relationships between certain mathematical structures on the one hand, and their applications in computer science on the other. But since it treats mathematical knowledge as primary rather than as something to be picked up ``on the fly", this course provides an opportunity to focus on building a solid mathematical foundation for computer science. This is important --- after all, no computer scientist has ever said that they wished they had less mathematical background or understood mathematics less well! Specific topics to be covered include propositional logic, predicate logic, proof techniques, basic set theory, functions, relations, counting principles, inductively defined sets, inductive proof, and recursive definitions. Prerequisite: permission of instructor

CS 3532: Competitive Programming - Chad Waters
Competitive programming is all about solving mathematical and computational problems. In this course, we look at various problem solving paradigms to tackle a wide variety of fun and interesting problems. The skills developed in this course reinforce skills such as problem solving, rapid prototyping, and programming proficiency. We meet for three hours, one hour for a lecture on a topic related to competitive programming, then one hour to work on a handful of problems alone or in small groups, and then an hour to go over solutions to proposed problems. This covers topics such as advanced data structures, graph algorithms, string matching, and programming paradigms such as complete search, divide and conquer, and dynamic programming. Prerequisite: CS 3460: Data Structures

CS 3537: Cloud Computing - Mark Hills In this course we will cover a number of topics relevant to cloud computing. This will include different cloud service models; cloud administration and security; cloud storage; software architectures related to, or enabled by, cloud; cloud application support; DevOps; and APIs. Upon completion of this course each student will be able to: compare and contrast different service models for cloud computing, e.g., IaaS, PaaS, SaaS; configure and administer security, billing, networking, and logging for cloud services; select and configure appropriate storage solutions for cloud applications, including file-based, relational/SQL, and NoSQL storage alternatives; utilize cloud services to support typical application execution scenarios; configure and use DevOps build pipelines, including support for application build, automated test, containerization, and deployment; and use and create RESTful APIs. Prerequisites: CS 3430: Database and CS 3667: Software Engineering

CS 3540: Single Page Applications - Jay Fenwick This is an advanced front-end web development course. Students will code with TypeScript in the Angular Framework and learn to create fast, responsive, and well structured websites. Prerequisite: 2440 with a C or higher. Client-Side (3440) or some web development experience is recommended but not required. This course will count as a prereq for CS 4435: Server-side Web Programming.

CS 4435: Server-side Web Programming - Joel Swanson
This course introduces the technologies for implementing secure, high performan and sophisticated web sites. Topics may include: installation and configuration a web server, client/server web applications with database backends, web develo frameworks, web services, web data formats, and content management systems. Prerequisites: CS 3430 and CS 3440.

CS 4440: Artificial Intelligence - Mohammad Ali Javidian/Yeganeh Madadi
This course covers various topics in artificial intelligence. Topics may also include knowledge representation and manipulation, heuristic programming, expert systems, robotics, machine learning, or natural language processing. Prerequisite: C_S 3460 with minimum grade of ``C-" (1.7) or C_S 3435; STT 3850.

CS 4521: Operating Systems - Cindy Norris
An in-depth study of the design and implementation of operating systems including process management, memory management, file systems, and input/output. Lecture three hours, laboratory three hours. Prerequisite: C_S 3482.

CS 4541: Causal Inference - Mohammad Ali Javidian
This course provides an introduction to causal inference, focusing on both theory and practical applications. Using the textbook ``Causal Inference in Statistics: A Primer" by Judea Pearl, Madelyn Glymour, and Nicholas P. Jewell, students will explore statistical and causal models, graphical models and their applications, the effects of interventions, and counterfactual reasoning. The course includes hands-on experience with real-world data, leveraging R packages like 'bnlearn' and 'pcalg', as well as the Python library 'DoWhy' to implement causal inference methods in practice. This course is cross-listed with CS 5770: Topics in Theoretical Computer Science . Only seniors will be able to enroll in the course. .

CS 4542: Deep Learning - R. Parry
This course will cover topics in deep learning such as multilayer perceptrons, convolutional neural networks, recurrent neural networks, deep reinforcement learning, and generative adversarial networks. We will cover topics at a high-level first, then take a deep dive into neural networks mathematical foundations, culminating with team projects using TensorFlow. To succeed in this course you will need to write and debug your own programs; read, write, and interpret differential calculus and matrix/vector algebra; and work on a team to implement deep network architectures to solve problems. Note: This course will count for CS 4755 in the data science certificate program. Prerequisites: CS 3460 and MATH 2240 with a grade of C- or higher. This course is dual-listed with CS 5750: Topics in Data Science & Visual Computing . Only seniors will be able to enroll in the course.

Graduate courses can be used to earn honors credit and meet undergraduate degree requirements. You can potentially earn CS elective credit for a graduate course or the course can be a substitute for an undergraduate degree requirement. If you are in the accelerated admission program then the graduate courses you take in your senior year (up to 12 hours!) can count for both the undergraduate and graduate degree.

If you are a senior (having earned 90 hours or more) and have a minimum 3.0 GPA, you can take graduate courses in Computer Science. To do so, you will need to complete the Request for Special Permission Form on this page.

The graduate courses being offered in Spring 2025 are:

CS 5521: Operating Systems - Cindy Norris
An in-depth study of the design and implementation of operating systems including process management, memory management, file systems, and input/output. Prerequisite: Equivalent of CS 3482 (Computer Systems II). Lecture two hours, laboratory three hours. [Dual-listed with CS 4521.]

CS 5667: Advanced Software Engineering - Mark Hills
Review of the system life cycle. Software metrics. System engineering. Analysis and system specification. Object-oriented modeling. Computer-aided software engineering (CASE). Verification, validation and formal specification. Both individual and group projects are required. Prerequisite: C_S 5666.

CS 5750: Topics in Data Science & Visual Computing - Mitch Parry
This course will cover topics in deep learning such as multilayer perceptrons, convolutional neural networks, recurrent neural networks, deep reinforcement learning, and generative adversarial networks. We will cover topics at a high-level first, then take a deep dive into neural networks mathematical foundations, culminating with team projects using TensorFlow. To succeed in this course you will need to write and debug your own programs; read, write, and interpret differential calculus and matrix/vector algebra; and work on a team to implement deep network architectures to solve problems. Note: This course will count for CS 4755 in the data science certificate program. Prerequisites: CS 3460 and MATH 2240 with a grade of C- or higher. This course is dual-listed with CS 4542: Deep Learning.

CS 5770: Topics in Theoretical Computer Science - Mohammad Ali Javidian
This course provides an introduction to causal inference, focusing on both theory and practical applications. Using the textbook ``Causal Inference in Statistics: A Primer" by Judea Pearl, Madelyn Glymour, and Nicholas P. Jewell, students will explore statistical and causal models, graphical models and their applications, the effects of interventions, and counterfactual reasoning. The course includes hands-on experience with real-world data, leveraging R packages like 'bnlearn' and 'pcalg', as well as the Python library 'DoWhy' to implement causal inference methods in practice. This course is cross-listed with CS 4541: Casual Inference.

If you like math or want to get better at math (who doesn't want to get better at math?) then you should consider completing a math minor. Because some Math courses also count as CS electives, you can get a math minor by taking as little as one extra course. Specifically, MAT 4310: Numerical Methods counts both as a CS elective and toward the math minor. The one extra course to take is the prerequisite for MAT 4310, which is MAT 2310: Computational Mathematics.

However, sometimes CS students ask for a prerequisite override to get into MAT 4310 because MAT 2310 isn't hard for strong CS students. To be granted that override, you will need to demonstrate appropriate mathematical preparation by earning good grades in Calculus I, Calculus II, and Linear Algebra. If you obtain an override, your extra course can be something more challenging, like MAT 2130: Calculus with Analytic Geometry III.

Sounds interesting? Talk to your advisor and check out the math minor requirements here.

The requirements for the cybersecurity minor can be found here. Two of our CS electives can count toward that minor: CS 3760: System Administration and Security and CS 4450: Data Communications and Networking. If you take those two courses in CS, you can earn the cybersecurity minor with three additional CIS courses. Alternatively, you can take five CIS courses to earn it.

If the major, minor, or certificate is in another college, you need to go to that college's advising office. If the major, minor, or certificate is in the College of Arts & Sciences (like Computer Science is), the form to do that can be found on the Student Forms page.

Your best source of information is Degree Works. There you will see what courses you need to complete each of your majors, minors, and certificates.

Of course, some courses have prerequisites and those prerequisite courses may have a required grade. Degree Works can help you figure that out too. If you click on the number of a course you need to take, then a window will pop up that describes the course and indicates the prerequisites. This prerequisite chart can also help.

A few other things to keep in mind are:
1) You will need to take ENG 3695 instead of CS 3100. Currently, CS 3100 is not being offered.
2) When you choose ILE and LSE courses, pay attention to the "fine print". For LSE, you need three discipline prefixes.
Also, you want to choose courses that meet the required designations (FA, HS, LS, and SS). Otherwise, you could end up taking courses just to meet required designations.
3) Choose a Science Inquiry sequence that also meets the CS science sequence requirement.

Undergraduate students should apply for graduation one semester before they plan to graduate. More information can be found about that here.

The graduation application can be found on appalnet. More information about that can be found here.

You will need a minimum of 120 hours to graduate with a Computer Science degree. In order to complete the degree in eight semesters, that works out to be 15 hours a semester. You will need to take 12 hours to be enrolled full-time (which can impact financial aid) during the academic year. You need special permission to take more than 18 hours. During a summer session, full-time is 6-7 hours.

If you are a highly motivated and academically talented student, you should consider joining the honors program. This will give you the opportunity to take more advanced classes and work closely with one of our CS faculty members. More information about the CS honors program can be found here.

According to glassdoor, the median salary for a data scientist is $161K. Data scientists ask questions and use math and programming skills and large amounts of data to find answers.

The CS department offers a Data Science certificate that is open to all majors, but is easiest for CS majors to earn because of the significant overlap in the certificate and major requirements. You can earn the certificate by taking as little as one extra course. More information about Data Science and the certificate requirements can be found here.

Internships are a good idea, especially after your junior year. A good internship experience can lead to a job offer that is waiting for you after graduation. You can also earn elective credit for an internship. Visit the Internships page to find out how to get credit for an internship and look for internship opportunities. Students have also found opportunities via Linked in and Indeed.

Graduates with both a BS and MS degree in Computer Science typically receive higher salary job offers than students with only the BS degree. This higher starting salary can lead to significantly higher earnings across one's career. App State offers an accelerated admissions program that allows students to earn a BS and MS degree in five years. Normally, earning those two degrees takes six years. In addition, the department can generally provide $12k of funding during the academic year for graduate students. More information about the graduate program in Computer Science can be found here.

Of course, you can direct questions to your CS advisor. Degree Works shows you who your CS advisor is.

You can also contact Dr. Cindy Norris. In particular, contact Dr. Norris if you have a question that should be added to the FAQ.