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.
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.
CS4300: Advanced Computer Science Topics: Robotics Design for Competition
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
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.
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.