Advanced Topics in Computer Science

Unit 0: Computer Science

A bridge from AP Computer Science A into advanced honors computer science habits: design, implementation, testing, abstraction, and clear technical communication.

Unit Focus

What this unit is really teaching

Students review Java, object-oriented design, program tracing, debugging, testing, and the expectations of an advanced CS course before moving into abstract data types.

Key Topics

  • +Course setup, coding environment, and Git or file organization habits
  • +AP Computer Science A Java review: classes, objects, arrays, ArrayLists, recursion, and 2D arrays
  • +Program design, implementation, testing, and debugging workflows
  • +Abstraction, encapsulation, modularity, and reusable helper methods
  • +Technical writing: explaining code, tracing algorithms, and documenting tradeoffs
  • +Survey of advanced areas: GUIs, networking, cybersecurity, robotics, AI, and parallel computing

Practice Work

Implementation and analysis tasks

Student task

Refactor an AP Computer Science A-style Java project into cleaner classes and helper methods.

Student task

Write a test plan that catches edge cases before adding new features.

DSA Assignment Bank

30 interview-style algorithm questions for this unit

Code Scholars provides structured assignments, implementation support, edge-case review, and runtime analysis coaching so students learn the concept rather than only memorizing a solution.

1

Array traversal and helper methods

Normalize a grade report

Write a method that receives raw scores, drops invalid entries, scales the remaining scores to a 100-point range, and returns a summary object with min, max, and average.

2

Counting and data validation

Build a reusable attendance analyzer

Given daily attendance counts for a club, compute streaks, detect impossible values, and report the first week where attendance drops below a threshold.

3

Decomposition

Refactor repeated project checks

Turn repeated validation code for a student project into helper methods that check naming, missing fields, and boundary cases without changing the observable output.

4

Objects and side effects

Trace object state across method calls

Given several Student objects and a method that updates points and status flags, predict the final state and identify which update should be made private.

5

Unit testing strategy

Design a testable score calculator

Implement a quiz score calculator with small methods for parsing, validation, penalties, and feedback bands, then list tests for empty, perfect, and mixed inputs.

6

Program organization

Convert a menu program into command handlers

Take a menu-driven program and design a table of command names mapped to helper methods so adding a new command does not change the main loop.

7

Data cleanup

Detect inconsistent app usage records

Given arrays of usernames, minutes, and activity labels, find records with missing names, negative minutes, or duplicate timestamps.

8

ArrayList mutation

Build a small leaderboard update

Process a stream of score updates, maintain a sorted top-five leaderboard, and explain how ties should be handled.

9

Debugging workflow

Find the first broken test case

Given expected and actual output arrays, locate the first failing case, summarize the failure pattern, and propose the smallest code area to inspect.

10

Sentinel loops

Create a safe input loop

Write a loop that collects integer ratings until a sentinel appears, rejects invalid values, and reports the number of accepted and rejected entries.

11

Frequency counting

Summarize survey choices

Given an array of survey responses, count each valid choice, ignore unknown choices, and return the most common response with tie behavior documented.

12

Correctness review

Compare two implementations

Given two methods that claim to remove duplicates from a list, design cases that reveal whether either method skips elements or changes order unexpectedly.

13

State modeling

Track project milestones

Model project tasks with fields for name, owner, done status, and priority, then write a method that returns overdue high-priority tasks.

14

Algorithm tracing

Build a trace table generator

Given a loop over an array, produce a table of index, current value, running total, and branch taken after each iteration.

15

String processing

Create reusable string cleanup

Write a helper that trims, normalizes spacing, removes unsupported characters, and preserves meaningful capitalization for display names.

16

Hashing preparation

Find duplicate submissions

Given arrays of assignment IDs and student IDs, identify repeated submissions by the same student for the same assignment.

17

Conditionals and maps

Design an error message classifier

Group compiler-style error messages into categories such as syntax, type, missing symbol, and runtime risk, then count each category.

18

Security-aware counters

Model simple login attempts

Track failed login attempts per user, lock accounts after a limit, and explain how the code avoids locking the wrong user.

19

Windowed traversal

Implement a rolling project average

Given weekly project scores, compute each three-week rolling average and identify the largest improvement window.

20

Predicate design

Build a course roster filter

Filter a roster by grade, prerequisite status, and schedule availability while keeping the original roster unchanged.

21

Simulation setup

Generate small randomized test data

Create repeatable random test data for scores and absences using a seed, then explain why repeatability helps debugging.

22

Edge-case review

Check array boundary assumptions

Given code that accesses neighbors in an array, redesign the loop so it never reads outside the array and still processes every valid pair.

23

Sorting and strings

Rank feedback comments by length

Sort student feedback comments by length, break ties alphabetically, and preserve the original comments for later display.

24

Similarity counting

Create a simple plagiarism flag

Given token arrays for two small programs, count matching adjacent token pairs and flag only when the score crosses a documented threshold.

25

Class design

Design a project rubric object

Build a RubricItem class with name, max points, earned points, and feedback, then write a method to compute total percentage.

26

Set thinking

Find missing checklist items

Given required setup steps and completed setup steps, return the missing items in the original required order.

27

Index arithmetic

Implement console pagination

Show a long list of practice prompts five at a time and compute which items appear on each page without duplicating or skipping entries.

28

Aliasing prevention

Create a safe copy method

Given an object that stores an internal array, write constructor and accessor logic that prevents outside code from mutating internal state.

29

Code review

Review a flawed helper method

Given a helper method with a hidden off-by-one bug, identify the failing input and rewrite the loop header correctly.

30

Assignment design

Plan a larger DSA assignment

Break a data-cleaning and leaderboard project into milestones: input validation, storage choice, algorithm, tests, and written analysis.

Need support with Unit 0?

Work through the concepts, code, edge cases, and runtime analysis with 1:1 guidance.