Early registration for Spring 2024 opens on Wednesday, November 1, and closes on Tuesday, November 14. (Schedule adjustment period is Wednesday, November 15 through January 22, 2024.) Early registration 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 You can also see classes being offered via the Web Registration System on the "Check your Registration Status" link under the Student tab on Appalnet. Note that both of those will allow you to search for classes that meet certain criteria (for example, Gen Ed).
The department is planning to offer the following courses in the first summer session: CS 1100: Discrete Math; CS 2490: Intro to Theory; CS 3667: Software Engineering; and CS 3760: System Administration and Security.
The department is planning to offer the following courses in the second summer session: CS 1100: Discrete Math; CS 2490: Intro to Theory; CS 3430: Database; CS 3481: Computer Systems I; and CS 3537: Software Modeling.
These courses will span both summer sessions: CS 1440: Computer Science I; CS 2440: Computer Science II; and CS 2450: Intro to Computer Systems.
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 about the Data Science Certificate.) In Spring 2024, this Data Science course will be offered:
CS 3435: Data Collection & Visualization - R. Parry This class provides students an opportunity to develop skills to access and organize data, scrape data from websites, determine and improve data quality, and produce interactive graphical representations to help discover patterns and answer questions. A class project will provide students the opportunity 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 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.
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. Prerequisites: CS 1100 and CS 1440 with a grade of C or higher.
CS 3530: Full Stack Web Development - Willow Sapphire Full Stack Web Development is an advanced web development course that focuses on writing server side code and connecting the server to a database and a front-end. Prerequisite: course in Single Page Applications or permission of instructor
CS 3533: Visual Analytics Design - Tinghao Feng Visual Analytics is the field that combines techniques of interactive information visualization and algorithms or methods of data analytics. A good Visual Analytics design helps users extract insights from data to support decision-making. This course focuses on Visual Analytics design for data analysis tasks. With this course, students will learn the basic theory of Visual Analytics, practice the design process following a sketch-based design methodology, and achieve the Visual Analytics design using Tableau and D3. This course contains some practical projects, including individual and group work, that aim to help students understand the complete flow of Visual Analytics. Prerequisite: CS 2440 with C or better; client-side programming experience is helpful
CS 4435: Server-side Web Programming - Joel Swanson This course introduces the technologies for implementing secure, high performance, and sophisticated web sites. Topics may include: installation and configuration of a web server, client/server web applications with database backends, web development frameworks, web services, web data formats, and content management systems. Prerequisites: CS 3430 and CS 3440.CS 4465: Computer Graphics - R. Parry Fundamental concepts of computer graphics. Topics include hardware and software systems, scan conversion of graphics primitives, color and color perception, modeling of curves and surfaces, clipping, antialiasing, model-view and projection transformations, light and shading, and hidden surface removal. Prerequisites: CS 3460 with a minimum grade of "C-" (1.7); and MAT 2240.
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: CS 3482.
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 2024 are:
CS 5100: Seminar in Computer Science - Abdelbaset Hamza Discussion and presentation of current topics in computer science. Each student will make oral and written reports on the results of research conducted on an instructor approved topic. Professional development aspects are also covered, including resume writing and interviewing skills. Prerequisite: Graduate status in computer science.
CS 5465: Advanced Computer Graphics - R. Parry Review of 2D coordinate systems, primitives and transformations. Anti-aliasing. Theory of light. Color models. Homogeneous coordinates and perspective transformations. Curve and surface representation. Solid modeling. Reflection and refraction. Image rendering. Visualization and 4D computer graphics. Parallel computer graphics hardware and algorithms. Prerequisite: CS 4465 (Computer Graphics).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).
CS 5531: Optimization in CS - Mohammad Ali Javidian Optimization stands at the core of decision-making processes in both engineering and economics, guiding choices towards the most favorable outcomes based on an objective function or performance index. With the evolution of computer technology, optimization has surged to the forefront, benefiting from innovations like high-speed processors, user-centric software, and artificial neural networks. Notably, the widespread availability of tools such as MATLAB's Optimization Toolbox and other commercial software underscores its significance. This course is tailored to arm students with a foundational understanding of optimization theory and methods. Through an array of practical examples, we'll delve into the core theories and algorithms, as laid out in the textbook. While the course doesn't focus on the cutting-edge numerical techniques, it aims to furnish students with a robust groundwork for diving deeper into specialized optimization topics in the future. Master students in both theory and algorithm concentration can register for this course. Textbook: Chong, E. K., & Zak, S. H. (2013). An introduction to optimization (Vol. 75). John Wiley & Sons.
CS 5549: Interactive Theorem Proving - Andrew Polonsky This course will introduce students to theorem proving using the proofs-as-programs paradigm, which allows mathematical concepts to be developed on a computer. We will use Agda, a functional programming language with dependent types, that has a unique interactive programming style. The course will show how standard logical reasoning patterns can be represented in code, covering propositional logic, predicate logic, induction, structural induction and higher-order reasoning. These techniques will then be applied to formalization of concepts from theoretical computer science, programming language theory, and program verification.
CS 5780: Topics in Web & Mobile Computing - Jay Fenwick This course examines advanced topics in web ∓ mobile computing, such as server-side web programming, front-end web development, cloud computing, visual analytics, and scrum techniques. May be repeated for a maximum of 6 hours when content does not duplicate. Prerequisites: CS 3460 (Data Structures) and CS 3667 (Software Engineering), or by permission of graduate program director.
CS 5800: Project - Jay Fenwick In this course, students are required to work on an approved project under the guidance of a faculty advisor and/or the course instructor. Students are also required to prepare a written document and make an oral presentation about the project. Prerequisite: Department approval.
CS 5998: Thesis Preparation - Jay Fenwick The student develops the thesis proposal, carries out research for the thesis topic, and meets regularly with the thesis advisor to develop the thesis. First half of a two-semester thesis requirement; the student also must complete C_S 5999. C_S 5998 may be repeated, but only three semester hours of credit may be applied to a graduate Program of Study. Graded on an S/U basis.
CS 5999: Thesis - Jay Fenwick Graded on an SP/UP basis until the thesis has been successfully defended and received final approval, at which time all grades will be changed to S. Prerequisite: C_S 5998.
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 enrollment 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.
Note: undergraduate students can earn honors credit by taking graduate courses.
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. Note that there is a Flyers block that contains a link to sign up for notifications about 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 $14k 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.