Undergraduate Advising FAQ

Early registration for Summer and Fall 2024 opens on Monday, April 1, and closes on Monday, April 12. 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

Excepting CS 3667, these courses are offered face-to-face.

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 - Courtney Dixon
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 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.

CS 3760: System Administration & Security - Rahman Tashakkori
Addresses local and global security issues with computers using different operating systems in a networked environment. Assignments allow student teams to experience a variety of administration responsibilities including installation, operation, and management. Prerequisite: CS 3460 with a minimum grade of "C" (2.0). Unix experience recommended.

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 - Shane McCann
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, except for CS 1100, are all offered face-to-face. CS 3537 is a selected topics course that counts as a CS elective.

CS 1100: Discrete Mathematics - Danielle Lapensee-Rankine
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.

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 3481: Computer Systems I - Cindy Norris
The hardware and software components of computer systems are studied. Included are those aspects of computer systems that are essential to highly skilled programmers: data representation and operations, source code implementation, processor architecture, program optimization, memory hierarchy, linking, exceptional control flow, and virtual memory. Lecture two hours, laboratory three hours. Prerequisites: CS 2450 and CS 2490 with a minimum grade of “C-” (1.7) in each. Corequisite: CS 3460.

CS 3537: Software Modeling - Mark Hills
This course provides an introduction to software modeling techniques used to understand, develop, test, and verify software systems. Topics include model-driven software engineering, UML, OCL, model transformations, model-based testing, logical representations of software systems, and model checking. Prerequisite: CS 2440 with a grade of "C" (2.0) or higher.

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

In addition to counting as a CS elective, CS 4755 counts toward the Data Science Certificate.

CS 3240: Mobile Device Programming - Mark Hills
Hands-on, experiential exposure to developing applications for modern mobile platforms (for example, Android or iOS). Topics include platform framework, process life cycle, fundamental user interface components and layouts, databases and content providers, services, widgets, testing, and debugging. Modern development tools are used. Students work individually on prepared projects and in small teams to build a custom project. Prerequisite: C S 2440.

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 3750: Applied Neural Networks - Mitch Parry
This project-oriented course provides an opportunity for students to learn and apply neural networks techniques to solve a variety of problems from different disciplines, applying such techniques in pattern recognition, time series prediction, data mining, and optimization problems. Focus is on some applications of artificial neural networks in the real world.
Prerequisites: CS 3460 with a minimum grade of “C-” (1.7) or CS 3435; MAT 2240.

CS 4450: Data Communication & Networking - Abdelbaset Hamza
Introduction to data transmission concepts and techniques; channel characteristics; encoding methods; line control and error detection/correction protocols; circuit, message, and packet switching; layered network architectures and protocols; addressing, routing and flow control strategies; access methods; performance criteria and tradeoffs.
Prerequisite: CS 3481.

CS 4536 Functional Programming - Patricia Johann
Students will learn the features of functional programming languages reinforced with practical use of the Haskell language. Students will complete weekly homeworks of small-ish Haskell programming exercises. Students will also complete two medium-sized programming projects, namely a Turtle Graphics program and an interpreter for an imperative language, both written in the functional language Haskell. The latter project will require using well-known parser combinator library to write original, project-specific code.
Prerequisite: CS 3460 with a minimum grade of "C-" (1.7).

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 2024 are:

CS 5110: Design and Analysis of Algorithms - Mohammad Ali Javidian
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 5450: Computer Networking - Abdelbaset Hamza
Computer network architectures. The Internet protocol suite including TCP, UDP, ICMP, and IP. Routing and congestion control. Network monitoring and management. Specification, design, and implementation of network protocols. Creation of a socket-based client/server distributed application.
Prerequisite: CS 4450 (Data Communications and Networking).

CS 5455: Topics in Machine Learning - Mitch Parry
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 uses computer programming and linear algebra to understand machine learning algorithms, their practical application, and ways to evaluate them. Topics include machine learning models such as artificial neural networks and support vector machines, as well as techniques such as feature selection, dimensionality reduction, model selection, and hyperparameter tuning.
Prerequisites: CS 3460 (Data Structures) and MAT 2240 (Linear Algebra)

CS 5536 Functional Programming - Patricia Johann
Students will learn the features of functional programming languages reinforced with practical use of the Haskell language. Students will complete weekly homeworks of small-ish Haskell programming exercises. Students will also complete two medium-sized programming projects. A Turtle Graphics program that requires students to implement specific optimizations of their Haskell program. They will also be required to use their Haskell program in a Turtle Graphics application of their choice that cannot be achieved without recursive calls to it. The second project is an interpreter project that requires students to extend the lexer, parser, and interpreter they have written to handle an imperative language that supports not only integer data (as is required of the undergraduates), but also supports boolean data and language constructs that work with such data.
Prerequisite: CS 3460 with a minimum grade of "C-" (1.7).

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. Cindy Norris. In particular, contact Dr. Norris if you have a question that should be added to the FAQ.