Undergraduate Advising FAQ

Early registration for Summer and Fall 2023 opens on Monday, April 3, and closes on Monday, April 17. Registration functionality opens up for individual students depending upon their earned hours. The initial registration access time may be viewed on the "Check Your Registration Status" page on AppalNet.

The registrar maintains a website that allows a Class Schedule Search

Summer Session 1 Courses

These courses are all offered face-to-face. CS 3544 is a selected topics course that counts as a CS elective. In addition to counting as an elective, CS 3544 can substitute for CS 4755, which is required for the Data Science Certificate.

CS 1100: Discrete Mathematics - Mohammad Ali Javidian
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 - Raghuveer Mohan
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.

CS 3544: Machine Learning for Cybersecurity - Mir Pritom
We are experiencing an increase in the trends of using Artificial intelligence (AI) and machine learning (ML) techniques in cyber-security problems. AI and ML help to automate the identification of security threats and safeguard systems/infrastructures much faster with a reduced cost than using only human efforts. In this course, students will apply various supervised and unsupervised machine learning models on security datasets or logs to solve potential critical detection engineering problems such as anomaly detection, spam detection, malicious website detection, and/or fraud detection. We will discuss topics such as data sources, data pre-processing, feature extraction, feature engineering or selection, model selection, performance metrics, and ML model's parameter tuning. Knowledge of Python programming and/or data analysis might help students in this course. Prerequisite: CS 3460 with "C" or higher.

CS 3667: Software Engineering - Willow Sapphire
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.

Ten week Courses

These courses will be offered across both summer sessions. CS 1440 and CS 2450 will both be offered online. CS 2440 will be face-to-face.

CS 1440: Computer Science I - Abdelbaset Hamza
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
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
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

These courses are all offered face-to-face. CS 3536 and CS 3537 are selected topics courses that count as CS electives.

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 3536: Linux Systems Programming - Cindy Norris
This course will cover the low-level programming interfaces provided by Linux, the free implementation of the Unix operating system. These interfaces allow applications to perform tasks such as file I/O, creating and deleting files and directories, creating new processes, executing programs, setting timers, communicating between processes and threads on the same computer, and computing between processes residing on different computers connected via a network. Students will build a variety of applications that rely on the linux programming interface. Prerequisite: CS 3481 with a minimum grade of "C".

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.)

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.

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

In addition to counting as CS electives, CS 4531 and CS 4755 count toward the Data Science Certificate. (CS 4531 can act as a substitute for CS 4755 in meeting the certificate requirements. See FAQ about Data Science Certificate.)

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 basic set theory, functions and relations, counting principles, inductively defined sets, inductive proof, recursive definitions, propositional logic, predicate logic, syntax and semantics of algebraic data types, and semantics-based techniques for programming with algebraic data types. Prerequisites: CS 1100 and CS 1440 with a grade of C or higher.

CS 3440: Client Side Web Programming - Joel Swanson
This course covers client-side graphical user interface programming using current internet technologies including browser scripting languages, GUI presentation, asynchronous server communication, event handling, and XML processing. Prerequisite: CS 2440 with a grade of "C" (2.0) or higher. A major individual project is required.

CS 3540: Single Page Applications - Willow Sapphire
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 3545: Introduction to Information Security and Privacy - Mir Pritom
This is an introductory course on computer and information security. The topics will cover some common security threats, classic attack types, asking the right security questions, CIA principles, preventing security and privacy breach, data integrity, encryption, digital signatures, basic cryptography, access control, authentication, password cracking, firewalls, intrusion detection system, Internet security, software and system vulnerability, social engineering (Phishing), DNS security, and IoT security. There will be both lectures, discussions, and hands-on activities (labs, project) on these topics to prepare students better as security professionals. Prerequisite: 2440 with a C or higher.

CS 3542 Topics in Software Engineering - Prof. Willow Sapphire This course will cover best practices for writing object oriented code, managing projects, and writing robust tests. There will be some, but minimal, overlap with CS 3667 course material.

CS 4531: Problem Based Deep Learning - Mitch Parry
This course will cover topics in deep learning such as 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.

CS 4755: Applied Machine Learning - Tinghao Feng
Machine Learning is the process of teaching a computer what to do by providing a model for learning and many examples but without explicit instructions. This course introduces algorithms and processes for machine learning, including topics such as feature selection, parameter tuning, model selection, and performance estimation, as well as algorithms for classification, regression, and clustering. Prerequisites: CS 3460 with a minimum grade of "C-" (1.7) or CS 3435; MAT 2240.

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 Fall 2023 are:

CS 5110: Design and Analysis of Algorithms - Raghuveer Mohan
Algorithmic paradigms, worst-case and average-case analysis, recurrence relations, lower bounds, classes of P and NP, and NP-complete problems. Applications including sorting, searching, dynamic structures, set algorithms, graph algorithms, randomized algorithms, and pattern matching. Prerequisite: CS 3460 (Data Structures).

CS 5240: Mobile Device Programming - Mark Hills
This course will consist of a hands-on part as well as a research component. For the hands-on part, students will be learning Android development using the Kotlin programming language. Students should ideally be comfortable with Java or another OO language coming into the course. Kotlin isn't hard to learn, but many existing Android examples are in Java (less over time), and Kotlin is also a JVM language so Java experience helps. For the research part, students will be looking at papers covering issues related to mobile device programming (e.g,. security, code refactoring, power management), and students will write a research report and give a presentation based around research related to mobile development (but not necessarily to Android).

CS 5245: Data Programming - Mitch Parry
This course brings together students from different disciplines who are working (or want to work) in data science. For students without programming experience, a significant part of the course will be devoted to learning computer programming in a high-level programming language such as Python or Matlab. Students who already know how to program will also gain experience using machine learning and visualization packages for those languages. Other topics will be covered based on student interest such as web scraping, web APIs, recommendation engines, image processing, natural language processing, and graphical user interfaces. Novice programmers will be paired with experienced programmers to complete a class project.

CS 5440: Topics in Artificial Intelligence - Mohammad Ali Javidian
This course will cover such topics as natural language processing, automated theorem-provers, expert system shells, and machine learning. Student projects will involve advanced logic programming techniques. Prerequisite: CS 4440 (Artificial Intelligence).

CS 5483: Computer Architecture - Abdelbaset Hamza
An in-depth study of current concepts in computer architecture, including such topics as concurrent execution, parallel architectures, RISC architectures, pipelined and array processors, data-flow machines, and special purpose processors. Prerequisite: CS 3482 (Computer Systems II).

CS 5666: Software Engineering - Jay Fenwick
Methodical development of large software systems. Topics include: models, project life cycle, requirements and specification, structure charts and design criteria, incremental implementation, software metrics. Use of module and source code management, symbolic debugging, and project planning software. Students will participate in the realization of both group and individual software systems. Prerequisite: CS 3481 (Computer Systems I).

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 that hard for CS students. If you do that, 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.

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, a job as a data scientist is one of the best jobs one could have in turns of job satisfication and earning potential. 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. Jay Fenwick. In particular, contact Dr. Fenwick if you have a question that should be added to the FAQ.