Syllabus#

Honors Computer Science Projects
2024-25
Dr. Kessner
Marlborough School, Los Angeles

Free periods: FI in D215

Course Description#

This course is for students who would like to continue their study of computer science beyond AP Computer Science A, and to apply the skills they learned in that course. The class provides a workshop / lab environment for students to work independently on individual or group projects, to improve their coding skills, and to explore and tinker with new technologies. Students have freedom to pick their own projects, and are encouraged to try things they have never done before. They may choose any area of computer science, including but not limited to: computer graphics, video games, virtual reality, mini-computers / microcontrollers (e.g. Raspberry Pi, Arduino), physical / wearable computing, interactive art, simulation, data analysis, scientific applications, programming languages, web development, mobile development. Students may enroll in this class multiple times for credit.

Learning Targets#

Discipline-Specific Conceptual Knowledge#

Learning the principles of software design and complexity management. Learning how to debug, handle errors, and validate software through testing.

  • skills (depends on project)

    • language / target platform (e.g. Javascript for web pages, Processing for video games, Python for data analysis)

    • domain-specific techniques (e.g. 3D graphics effects, exploratory data analysis)

  • practice:

    • implementation of features on their project(s)

  • assessment:

    • regularly scheduled code reviews

    • final presentation / performance

Communication & Dissemination#

Participating in code reviews, in which they present their projects to their classmates, communicate problems and solutions, and learn to give and incorporate feedback.

  • skills:

    • presenting technical knowledge in an understandable way

    • communicating the high-level design of a project

    • explaining problems and potential solutions

  • practice:

    • presenting project at code reviews

  • assessment:

    • regularly scheduled code reviews

    • final presentation / performance

Collaboration#

Working on projects with classmates, and also collaborate with students in other fields (e.g. social sciences, community partnerships, performing and visual arts, scientific research)

  • skills:

    • collaborating with classmates on coding assignments or projects

    • communicating details about problems or errors

    • describing advantages or disadvantages of potential implementations

  • practice:

    • working together on coding assignments

    • group software projects

  • assessment:

    • regularly scheduled code reviews

    • final presentation / performance

Agency, Leadership & Professionalism#

Managing projects by tracking progress on features and bugs, and prioritizing and scheduling coding tasks.

  • skills:

    • tracking and making regular progress on software projects

    • communicating progress and anticipating roadblocks

    • responding to feedback from clients or other collaborators

    • delivering software project on time

  • practice:

    • work on long-term software projects

  • assessment:

    • regularly scheduled code reviews

    • final presentation / performance

Design Process#

Using design thinking to model and break down problems. Learning to create and implement useful abstractions, and prototype and evaluate solutions.

  • skills:

    • research and prototyping

    • controlling code complexity through the use of language features (e.g. functions and classes) and design patterns

    • evaluating potential implementations

  • practice:

    • long-term software projects

  • assessment:

    • regularly scheduled code reviews

    • final presentation / performance

Reference#

(From the California Computer Science K-12 Standards)

The computer science core practices include:

  1. Fostering an Inclusive Computing Culture

  2. Collaborating Around Computing

  3. Recognizing and Defining Computational Problems

  4. Developing and Using Abstractions

  5. Creating Computational Artifacts

  6. Testing and Refining Computational Artifacts

  7. Communicating About Computing

Links: