Computer Science @NCSSM is about representing information and using computation to solve increasingly complex problems. We study how to craft, visualize, and automate systems to increase the efficiency and creativity of humans in an interdisciplinary and interconnected way.
The field of Computer Science is rapidly evolving and inherently interdisciplinary. Our courses a separated into three levels based on broad core concepts: Build (Level 1), Design (Level 2), and Lead (Level 3). All computer science courses satisfy the graduation requirement for the Department of Engineering and Computer Science or as a STEM election. However, some courses do not meet the requirements to move into the next level of courses -- this is generally because the course dedicates more time to interdisciplinary and breadth connections over the depth needed by the next level.
Students frame solutions around how data is structured and understand that data can be represented in many forms.
Students are introduced to and master problem solving techniques and design patterns such as modularization, encapsulation, and recursion.
Students learn the foundational tools of programming, data structures, and algorithms to enhance and automate computational tasks.
Students explore the connection of computer science to other disciplines and the mutual benefits of interdisciplinary teams.
Students create and test solutions through systematic approaches to debugging, creation of test cases, and integration.
Use computer science as an interdisciplinary tool to “get the job done.” We introduce foundational concepts and learn how to systematically approach crafting solutions. Courses at this level emphasize breadth over depth and more concrete approaches to interdisciplinary problems. Concepts include basic programming, modularization, computational thinking, and debugging.
Design Paradigms
Data as containment and as a spectrum.
Imperative with object use and synchronous execution
Computational Thinking
Data Categorization
Test cases and path coverage
Debugging and assertions
Modularization and encapsulation
Documentation
For yourself
Pre-Planning and comments are basic and formed for student understanding.
Introduction to reading technical documentation from others
Programming Concepts
Literals, variables, lists, dictionaries, strings, objects, and files
Conditionals, loops, functions, and scope
Integrated Development Environments
Use computer science to sculpt with intentional design and craft larger solutions. We expand foundational knowledge to understand the organization, integration, and testing of complex systems. Courses at this level emphasize the interconnectedness of ideas, collaboration, and human-computer interactions. Concepts include object-orientation, asynchronous programming, and data integration.
Design Paradigms
Data as Context and Objects as a spectrum
Closure systems with asynchronous execution
Computational Thinking
Modularization by responsibility and unit testing
Prototyping and integration analysis
Documentation
For others
Comments are concise and targeted so others can understand your thought process
Introduction to writing technical documentation for others
Programming Concepts
Classes, inheritance, polymorphism, recursion and exceptions
Encapsulation, modules, and libraries
Integrated Development Environments
Use computer science to drive understanding of optimization. We analyze systems to maximize efficiency and create knowledge. Courses at this level strive to place students at the leading edge of the field and place students in a leading role of projects. Concepts include machine learning, server-client architecture, and other advanced topics generally not seen until the junior year of undergraduate studies.
Design Paradigms
Problem Based and Specialized Systems
Concepts over language
Computational Thinking
Integration testing, process level debugging, and test harnesses
Documentation
For different scenarios
Comments are honed and deal with more complex scenarios
Writing and presenting for technical and non-technical audiences
Programming Concepts
Problems are classified and delegated to specialized entities
Client/Server Separation
NP-Completeness
Prediction/Classification
Version Control