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 the computer science pathways available through our program and courses are discussed briefly below. Please see the course catalog for specific course information, including prerequisites.

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.

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

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

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

Completing any of these introductory courses or demonstrating programming competence (see placement below) will allow you to take a more advanced course:

  • 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: (Residential and Online) Topics in CS - 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. For Fall 2021 this course will meet in a Durham classroom and be taught remotely by an instructor from NCSSM's Morganton Campus.

Completing our intermediate courses opens up advanced ones:

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

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. You are welcome to self-study prior to the exam. One resource for this is Dr. Morrison's Python textbook. There are many other resources as well, for example PythonLikeYouMeanIt and W3Schools tutorial on JavaScript.

  • 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) to the registrar and the CS faculty. Please also send your course portfolio to the CS faculty who will evaluate it to determine if it qualifies you to take our intermediate CS4240 Procedural and Object-Oriented Programming or 4300 Topics in Computer Science. 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++.

  • 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 registrar and the CS faculty and you will be eligible to take any of our intermediate or advanced courses (4240, 4260, 4280, 4300, 4320, 4340).

  • Placement by Exam: If you have programming experience, which may or may not include an AP test, you can take our department's placement test. The link contains a complete explanation of the process and you only need to take the sections intended for placement at the level you desire. The test offers a choice of several languages.

Due Dates

      • To request courses during the summer request period, the submission is due by 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.