These are precursor courses to CS1 courses for computer science majors OR they can be breadth/core courses for non-majors. These types of courses introduce computational thinking and problem solving to students with limited experience with computing. They may require no programming or may introduce some basic programming concepts. Learning goals typically include building problem solving skills and providing students a broad survey of the topics within the discipline of computer science. CS0 can be very useful for students who are trying to figure out whether computer science is for them. Because of this, it can serve as a valuable recruiting site for CS majors, especially women and students traditionally underrepresented in computing majors. One of the more well-known versions of CS0 is UC-Berkeley’s Beauty and Joy of Computing.
An introductory course for computer science majors (freshman level). These courses tend to cover fundamental programming concepts such as control structures, variables, arrays, and functions, and development methods such as testing and debugging.
Usually the course for CS majors that follows the first CS1 course. These courses are usually also offered at the freshman level. They tend to cover searching and sorting, and some fundamental data structures such as stacks, trees, and lists. In some cases, we will accept exceptional materials from sophomore-level data structures courses under the "CS2" label.
High school - 3B
Courses that primarily serves junior- and senior-level high school students and cover material that aligns with the CSTA K-12 Computer Science Standards, Revised 2017, Level 3B. http://www.csteachers.org/page/standards
High school - 3A
Courses that (primarily) serves freshmen- and sophomore-level high school students and cover material that aligns with the CSTA K-12 Computer Science Standards, Revised 2017, Level 3A.
Collection Item Type
Usually an out-of-class activity designed to be completed outside the formal instructional setting. It is designed to be completed within a short period of time (no longer than one week or beyond the duration of three contiguous class sessions).
In-class materials for providing step-by-step coverage of content, concepts, or activities. The collection only accepts well-annotated slides with supplementary implementation guidance for instructors who might want to use the slides.
An in-class activity designed to be completed during a designated ‘lab’ period or section. Labs often involve a sequence of tasks that are guided by an instructor or facilitator.
A multi-part activity that often combines multiple topics into a single, comprehensive solution. The product at the conclusion of a project in computer science is often a program. Sometimes a project also requires the submission of supplemental materials, such as a design document or a slide deck. Project usually take longer than one week to complete (if shorter, the Lab or Assignment designation may be more appropriate).
A student-facing document that outlines the purpose and structure of the class. All syllabi accepted to the collection must 1) be associated with an already accepted collection item (such as an assignment), 2) include a schedule of topics to provide other instructors with sequencing information.
A discussion of a particular teaching practice offering practical advice from experienced instructors on a particular approach to engaging students. Teaching Papers must be associated with at least one student-facing collection item (such as an assignment).
A student activity consisting of structured drills and training modules that (usually) lead students through a sequence of steps.
Other Material Type
A generic label for any materials that don’t easily fit into the previous Material Types. Examples include Animations (VTech)/Visualizations/Applets, Videos, Games (VIM Adventures), and Online Tutors (Guo).
As outlined in the ACM and IEEE CS 2013 report:
Algorithms and Design
A unit within the Software Development Fundamentals (SDF) Knowledge Area (KA) that addresses the core concepts in the Algorithms and Complexity Knowledge Area, most notably in the Basic Analysis and Algorithmic Strategies knowledge units. Examples: analysis of efficiency, iterative vs. recursive approaches, recursive functions, divide and conquer, abstractions. Mostly found in materials from CS2 courses.
A unit within the Software Development Fundamentals (SDF) Knowledge Area (KA) that builds the foundation for core concepts in the Software Engineering Knowledge Area, most notably in the Software Processes, Software Design, and Software Evolution knowledge units. Examples: debugging techniques, defensive programming, unit testing, code reviews. Can be covered in both CS1 and CS2.
Fundamental Data Structures
A unit within the Software Development Fundamentals (SDF) Knowledge Area (KA) that builds the foundation for core concepts in the Algorithms and Complexity Knowledge Area, most notably in the Fundamental Data Structures and Algorithms and Basic Computability and Complexity knowledge units. Examples include: linked list, stack, queue, tree, graph. Mostly found in materials from CS2 courses.
Fundamental Programming Concepts
A unit within the Software Development Fundamentals (SDF) Knowledge Area (KA) that builds the foundation for core concepts in the Programming Languages Knowledge Area, most notably in the paradigm-specific units: Object-Oriented Programming, Functional Programming, and Event-Driven & Reactive Programming. Core topics include data types, loops, conditional statements, methods, parameters. Mostly found in materials from CS1 courses.
None of the previous Knowledge Units apply.
Terms, concepts, and principles associated with the various Knowledge Units in computing (e.g., (such as variables, dynamic programming, Dijkstra's algorithm, and graphs). Accurately identifying the CS Topics is important in helping other instructors find your materials as it is one of the leading ways users search the site. NOTE: This is a finite list; additional topics may be added at the publication stage as requested.