Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include AP CSP curriculum guides #316

Merged
merged 10 commits into from Oct 5, 2016

Conversation

JackMorganNZ
Copy link
Member

Do final checks on work by @jamesatlas to include in CSFG.

Proof reading to be done by @timbellnz @JackMorganNZ.

I can work on solving the merge conflicts.

@@ -682,6 +682,38 @@ The following interactive can be used to upload your own image, and experiment w

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section is obviously going to merge conflict, can it please be put after the colour section, seeing as it is very advanced material, and I don't want it freaking out the NCEA students?

Another thought I have is, it will need to reference the content in the programming languages chapter, which gives an introduction to machine code. That chapter will help them understand what machine code is and how it relates to higher level programs, and then this content explains how it is represented using bits.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So the new order would be:

  • What's the big picture?
  • Getting Started
  • Numbers
  • Text
  • Images and Colours
  • Program Instructions
  • The whole story!
  • Further reading

Copy link
Member Author

@JackMorganNZ JackMorganNZ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made some comments about the changes we should make to James's work before merging in. There are many conflicts as James's work was based off an old version of the CSFG (about 1 year old).

@@ -108,6 +108,10 @@ But here's another program that implements exactly the same algorithm, this time
{image filename="highscore-in-scratch.png" alt="High score program in Scratch"}

Both of the above programs are the same algorithm.
Programming languages are often created or adapted to express algorithms clearly for a specific problem domain.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The language of these sentences are quite technical (2K words) compared to surround text. Would be worth considering alternatives.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From my experience, K2 words are fine, and realistically you need them. But non jargon K3 can generally be replaced with simpler words.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move this section to the 'What makes an algorithm section'

@@ -108,6 +108,10 @@ But here's another program that implements exactly the same algorithm, this time
{image filename="highscore-in-scratch.png" alt="High score program in Scratch"}

Both of the above programs are the same algorithm.
Programming languages are often created or adapted to express algorithms clearly for a specific problem domain.
For example, it is easier to read mathematical algorithms in Python than Scratch.
Similarly, data flow algorithms are clearer in visual programming languages like LabVIEW than Python.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The terms data flow algorithms and LabVIEW would be uncommon for (NZ) students.

If we develop or are given an algorithm to solve a problem, how do we know that it works?
Sometimes we create test cases to verify the algorithm produces correct output for specific input values.
While this is a useful practice and can help verify that we are on the right track, it is not enough to show that our algorithm is correct.
The old adage "even a broken watch is correct twice a day" is a good analogy.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change adage to saying

Correctness is particularly important when comparing two algorithms that solve the same problem.
If one algorithm is very fast to complete but produces incorrect results some of the time it may be far less useful than a correct algorithm that is slower.
Correctness is also important when using an algorithm as the building block for another algorithm.
Here is a greedy algorithm for roommate assignment:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The concept of roommates would be unfamiliar to New Zealand students. Possible consider alternative scenario.

@@ -139,6 +143,29 @@ The amount of time a program which performs the algorithm takes to complete may

The number of operations (such as comparisons of data items) that an algorithm makes however will not change depending on the speed of a computer, or the programming language the program using the algorithm is written in. Some algorithms will always make the same number of comparisons for a certain input size, while others might vary.

### Algorithm Correctness
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to confirm the right position for this section.

@@ -352,13 +379,103 @@ There are dozens of sorting algorithms that have been invented; most of the ones

{video url="http://www.youtube.com/watch?v=kPRA0W1kECg"}

## What makes an algorithm?
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Heading should be capitalized to be consistent with other headings.

@@ -682,6 +682,38 @@ The following interactive can be used to upload your own image, and experiment w

{comment end}

## Representing program instructions with bits
In a similar fashion to representing text or numbers using binary, we can represent an entire actual program using binary.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add note here to recommend reading sections of the Programming Languages chapter.

@JackMorganNZ
Copy link
Member Author

Note: I am in the process of manually merging this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

None yet

4 participants