Computer Science Course Descriptions and Prerequisites
CS4020: Web Development
CS4040: Game Design and Simulation
This course provides an introduction to game design principles and programming concepts. Students will learn the foundations of computer science while learning how to apply these concepts in the context of game design. The course will start by introducing fundamental computer science concepts such as variables, data types, conditional statements, loops, functions, and classes. After mastering these concepts, students will be introduced to proper game design techniques to develop playable games in multiple formats. Students will work on different projects throughout the course, where they will be expected to apply the principles learned to design and develop games. This includes developing an idea of what makes a game fun, and having rules and environments that support users to feel that the game experience is pleasing yet challenging, with the MDA (Mechanics, Dynamics, Aesthetics) format. A culminating final project will be developed to showcase game development knowledge and skill set.
CS4060: Scientific Programming
This course teaches computer programming skills and how to apply them for analyzing, interpreting, and displaying both large and small scientific data sets. Using Python, MATLAB, R, Mathematica, and associated software libraries, students learn to access data sets, write programs to calculate and manipulate data, display data, and perform basic statistical analysis. Programming concepts such as objects, variables, functions, conditional logic, and iterations are important concepts that are taught in the context of scientific programming and which allow this course to serve as a prerequisite for more advanced courses. The course features a final project allowing students to explore datasets in scientific areas of interest to them.
CS4070/AR4070 Art, Technology and Computing
This course asks students to expand on their definition of art to include technology as a platform for creativity. Students will learn the foundations of art, electronics, and programming in a unique course that asks them to maintain a journal, schematics, and programming cheat sheets. Students will develop their skills in a collaborative environment and make use of the art studio as well as the FabLab to bring their creative ideas into existence. The goal of this course is to develop and expand on creative skills and construct innovative and interactive work of arts. Students will gain knowledge and appreciation of art history while becoming more familiar with artists who are working with groundbreaking methods and materials. Students will learn the fundamentals of electronics to learn how to sense information from the surrounding environment and drive outputs to interact with and impact the environment. Programming concepts such as variables, functions, conditional logic, iteration, and objects are taught in the context of artistic expression.
CS4100: Human-Computer Interaction
Prerequisites: Any previous computer science course or permission of the Chair
This course is designed to introduce students to a user-centered approach to the design of software artifacts. Topics covered include concepts and techniques for interaction design, interface development and usability evaluation.
CS4120: Computing for Everyone
Prerequisite courses: None
This course is an introduction to basic programming skills and to the Python 3 programming language. Python is one of the most popular programming languages and is the language of choice for data science, machine learning and humanities research. Topics covered will include variables, expressions and statements, functions, conditionals, loops, recursion, string manipulation, input/output statements, lists, and dictionaries. Students will learn to develop and code solutions to problems consistent with challenges found in mathematics, science, engineering and the humanities.
Cross listed as MA4200. This course introduces students to cryptographic methods used to encipher and decipher secret messages, with an emphasis on using computer programming to automate the process. Through class discussions, problem-solving, group activities, and programming assignments, students will learn a variety of encryption schemes ranging from the age of Caesar to modern public key encryption used to secure digital communications online. Students will learn introductory number theory and statistics to describe these methods and identify weaknesses that allow secret messages to be read without the key. Students will also learn programming topics such as variables, functions, conditional logic, looping, and file input/output in the Python language to implement each cryptographic method. This course will utilize a blended learning environment, with large portions of material being taught online and utilizing in class time for working in groups.
CS4230: Networks and the Web
Prerequisites: CS4120 or Python Placement Exam or 4 or 5 on AP CSA
CS4250: Data Visualization
Prerequisites: MA4110 or CS4120 or Python Placement Exam
Data visualization is an important subdomain of Data Science where you translate data into a visual context, such as a map or graph, to make the data easier for the human brain to determine important characteristics and patterns. This course will provide you with the knowledge and practical skills necessary to develop a strong foundation for data visualization, and to design and develop advanced applications for visual data analysis. In particular, you will learn how to perform data visualization and analysis using data visualization libraries written for the Python programming language including Matplotlib, Seaborn and Pandas.
CS4270: Fundamentals of Object-Oriented Design
Prerequisites: One of CS4020, CS4040, CS4060, CS4070/AR4070, CS4120, CS4200/MA4200, EE4100, PH4130.
This is a second course in computer science which achieves two major goals: one is building skill in writing coherent programs that implement algorithms; the second is using classes and objects to assist in separating concerns through encapsulation and modularization. It is a course meant to turn good programmers into good computer scientists. We will discuss the various ways data can be stored and how the flow of programs can be manipulated. Finally, we will study the object model including problem decomposition, polymorphism, and inheritance. While this course does not exhaustively cover all concepts on the AP Computer Science A exam, it can be used to assist with preparation for the exam.
CS4280: Advanced Java
Prerequisites: CS4270 or Placement Exam
This course is designed to provide students with advanced knowledge and skills using the Java programming language. This course is a programming-intensive experience that has two major portions. First, the course focuses on topics such as object-oriented programming, data structures, algorithms, and advanced features of the Java language such as generics, the Collections Framework, and Streams. The second portion focuses on the development of event-driven GUI programs that enables the student to create a modern, full-featured application that is fully interactive and which can save state in a file. The emphasis in this course is on projects that increase in complexity as the course progresses.
CS4300: Topics in Computer Science
Prerequisites: Permission of the Chair
Various topics that change each year.
CS4320: Machine Learning
Prerequisites: CS4120, CS4270 or Placement Exam, MA4030 recommended
This course teaches basic machine learning concepts, algorithms and their applications using Python and associated software libraries. Machine learning concepts include where ML fits within AI, Data Science, and Statistics, where ML is being commonly used, and the larger societal context including possible ethical concerns. Machine learning techniques include supervised learning, unsupervised learning, and reinforcement learning. Applications may include implementation of decision trees, neural networks, and other frameworks. This course features a final project allowing students to apply machine learning techniques to a problem of interest to them. This course requires advanced programming skill and expects mastery of the Python programming language as evidenced by meeting the course prerequisite or by placement exam.
CS4330: Server-Side Development
Prerequisites: CS4230 or CS4270
CS4350: Data Structures and Algorithms
Prerequisites CS4230 or CS4270 or Permission of the Chair
Data Structures and Algorithms is a project-based course covering material generally found in a second semester undergraduate computer science major course. Students will explore foundational data structure and their application to computing concepts. Students will also learn how to analyze data structures and algorithms for efficiency to determine which data structure is most appropriate for a given scenario. Specific data structures covered include: linked lists, binary trees, heaps, hashmaps and graphs.
CS4900: Advanced Computer Science Topics: Robotic Design
Prerequisites: Permission of the Computer Science Chair
Robotic Design is a project-based course focusing on robotic applications for national robotic competitions that are supported by NCSSM-Morganton. Students will learn soft skills including project management, team management, professional documentation, and presentation skills. Students will also develop more robust technical skills in fabrication, sensor data implementation, computer vision, path-planning, kinematics, machine learning, ROS framework, and much more. Students with no previous robotics experience should first take EE4100: Introductory Robotics
CS4920: Advanced Computer Science Topics
Prerequisites: Permission of the Computer Science Chair
Various topics that change each year.
Additional courses with computational content taught by the Computer Science Faculty. Not eligible for Computer Science Credit but good skills to know.
EE4100: Introductory Robotics
This course provides students with the opportunity to develop skills in basic programming and design using an autonomous robot. Students will explore the use of sensors to have the robot react to its environment and learn to troubleshoot mechanical and software issues. Self-guided skill development early in the trimester is followed by a series of project challenges emphasizing teamwork and design.
MA4110: Foundations of Data Science
Prerequisites: MA4000 Precalculus & Modeling w/ Advanced Topics I
This course combines three perspectives: inferential thinking, computational thinking, and real-world relevance. Given data arising from some real-world phenomenon, how does one analyze that data so as to understand that phenomenon? The course teaches critical concepts and skills in computer programming and statistical inference, in conjunction with hands-on analysis of real-world datasets, including economic data, document collections, geographical data, and social networks. It delves into social issues surrounding data analysis such as privacy and design.