Computer Science

Computer Science Courses

We have many classes designed specifically for people who have never programmed before while also offering intermediate and advanced courses. We have several courses partnering with other departments and with the Ryden AI Program.

The diagram on the right shows courses that will be available on the Durham (blue), Morganton (yellow) and Online (green) campuses for the 2022-2023 academic year. Courses are discussed briefly below. Please see the course catalog for specific course information, including prerequisites. Residential students are welcome and encouraged to take online courses when the course is not available residentially. However, Online Program students do have placement priority for online sections.

All computer science courses satisfy the graduation requirement for the department of engineering and computer science as well as that for a STEM elective.

If you have prior experience with computer science, please see the placement section below.

NCSSM has several offerings in computer science that are designed specifically for people who have never programmed before.

Introductory-level Courses

CS4020: Web Development - Programming skills are learned in the context of developing web pages using dynamic content. Learn HTML, CSS, and JavaScript.

CS4040: Game Development & Simulation - Students will apply proper game design techniques to developing playable games in multiple formats. Students will learn foundational programming concepts with Ruby and associated libraries and use it to develop a text adventure game, 2D, and 3D programs and simulations.

CS4120: Computing for Everyone - This course is an introduction to basic programming skills and to the Python 3 programming language. Students will learn to develop and code solutions to problems consistent with challenges found in mathematics, science, engineering and the humanities. Note: the Durham residential offering may be provided in a synchronous remote format from Morganton faculty.

CS4200/MA4200: Cryptography - Learn the fundamentals of cryptography. Those without computer science skills can learn them through additional activities in this course and receive computer science credit. You can choose to have this course count towards graduation requirement credit in Mathematics or Engineering and Computer Science.

EE4100: Introductory Robotics - Use the LEGO EV3 hardware with industry-level software to program a robot that senses and responds to the environment in the project-driven class.

The following courses have prerequisites, or a student can take a placement test to demonstrate competence in the necessary skills. (see placement below).


Intermediate-level Courses

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 be introduced to the resources in NCSSM's FabLab and our new Creative Technology Lab, which houses a Virtual Reality Painting Studio. Students will also learn electronics and programming to enable the use of the Arduino electronic platform to sense the environment and respond with light, sound, and motion.

CS4100 - Human and Computer Interaction - Whether you are designing a website, a phone app, or a software system, the more you know about humans, the more likely it is that you will create a usable product. This course is designed to introduce students to a user-centered approach to the design of software artifacts.

CS4240: Procedural and Object-Oriented Programming - This intermediate course develops procedural and object-oriented programming and problem-solving skills using Python and Java programming languages.

CS4300: Topics in Computer Science - Cybersecurity: This course will introduce and provide an overview of the basics of Cybersecurity and the value it delivers to an enterprise in this modern digitally connected world.


Advanced-Level Courses

CS4250: Data Visualization - 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.

CS4320: Machine Learning - This course teaches basic machine learning concepts, algorithms and their applications using Python and associated software libraries. Applications may include implementation of decision trees, neural networks, and other frameworks. This course requires advanced programming skill and expects mastery of the Python programming language.

CS4280: Advanced Java - In this course we emphasize advanced programming beyond the AP syllabus, such as event driven GUI programming in Java FX.

CS4340: Data Structures with C - This course uses C to explore programming "close to the hardware" where knowledge of how data is stored and referenced, and means of efficiently organizing, retrieving, and using data, are important. This course is typical of what one would see at the undergraduate level and a high level of intellectual maturity is required.

CS4380: Algorithms - Students use the C programming language to study and implement basic data structures, including heaps, priority queues, and hash tables and the relevant algorithms and applications. Students choose and implement a case study of a related advanced topic.

Placement Information

Most people begin with one of our introductory courses but, if you have programming experience, you may qualify to take a more advanced course. You must demonstrate competence in programming well before the times you are able to request courses; if you have not completed the placement activities by the due date the courses will not be available to you.

Placement can be achieved by demonstrating competence by submitting AP scores or by exam.

  • AP Computer Science Principles: If you took the AP Computer Science Principles exam and scored a 4 or a 5 you may submit your scores (download a PDF of your score report from the AP website) and your course portfolio to the CS faculty. We are looking for competent use of conditionals, iterations, functions, and variable types in a standard procedural program such as Java, Python, JavaScript, or C++. Using AP CSP you may be able to place into our intermediate courses.

  • AP Computer Science A: If you took the AP Computer Science 'A' exam and scored a 4 or a 5 you may submit your scores (download a PDF of your score report from the AP website) to the CS faculty and you will be eligible to take any of our intermediate or most advanced courses.

  • Placement by Exam: If you have programming experience, which may or may not include an AP test, you can take our department's Placement Exams.

    • If you wish to place into an intermediate-level course without first taking one of the introductory courses you can either:

      • Take the Python Placement Exam which requires you to be familiar with the Python 3 programming language at the level described in the textbook, Think Python: How to Think Like a Computer Scientist in chapters 1-10 and 14. A free electronic version of the book is available for download here. To schedule taking the Python Placement Exam, email Dr. Larry Hodges. He will set up a time for you to take the exam on Canvas. Other useful resources are Dr. Morrison's Python textbook and PythonLikeYouMeanIt.

      • If you know a language other than Python you can take the exam found at this link. When completed send your exam materials to the CS Faculty.

    • Placement into CS4250 can be achieved with the Python Placement Exam mentioned above.

    • If you want to place beyond CS4240 into any other advanced course, you can take the appropriate parts of the exam found at this link. When completed send your exam materials to the CS Faculty.


  • Prerequisite Courses: You can take advanced courses by completing other courses at NCSSM first.

    • CS4240, CS/AR4070, CS4300, or CS4100 can be taken after completing any computer science introductory course, the engineering Robotics course, Computational Physics, Scientific Programming, Digital Humanities, and Introduction to Data Science.

    • CS4250, CS4280, CS4320, and CS4340 can be taken after CS4240.

    • CS4250 can be taken after CS4120

    • CS4380 can be taken after CS4340

  • To request courses during the summer request period, the submission is due before May 15th.

  • To request courses during the second semester drop/add period, the submission is due two weeks before the start of the drop/add period.