Include AP CSP curriculum guides #316

Merged
merged 10 commits into from Oct 5, 2016

Projects

None yet

4 participants

@JackMorganNZ
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.

@Heidirose Heidirose commented on the diff May 6, 2016
text/en/chapters/data-representation.md
@@ -682,6 +682,38 @@ The following interactive can be used to upload your own image, and experiment w
@Heidirose
Heidirose May 6, 2016 Contributor

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.

@JackMorganNZ
JackMorganNZ Sep 26, 2016 edited Member

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
@JackMorganNZ

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.
@JackMorganNZ
JackMorganNZ Sep 26, 2016 Member

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

@Heidirose
Heidirose Sep 26, 2016 Contributor

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

@JackMorganNZ
JackMorganNZ Sep 27, 2016 edited Member

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.
@JackMorganNZ
JackMorganNZ Sep 26, 2016 Member

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

@@ -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
@JackMorganNZ
JackMorganNZ Sep 26, 2016 Member

We need to confirm the right position for this section.

+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.
@JackMorganNZ
JackMorganNZ Sep 26, 2016 Member

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:
@JackMorganNZ
JackMorganNZ Sep 26, 2016 Member

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

@@ -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?
@JackMorganNZ
JackMorganNZ Sep 26, 2016 Member

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
@JackMorganNZ
JackMorganNZ Sep 26, 2016 edited Member

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
@@ -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.
@JackMorganNZ
JackMorganNZ Sep 26, 2016 Member

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

@JackMorganNZ
Member

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

@JackMorganNZ JackMorganNZ merged commit bf9e952 into uccser:develop Oct 5, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment