Learning Objectives - students will :
-
Understand the Advanced Placement Computer Science Principles (AP CSP) Course & Assessments
-
Identify the purpose and use of the Engineering Notebook.
-
Organize Engineering Notebook and prepare for the AP CSP Course
P0: Plan for the Course - The Engineering Notebook
Engineering Noteboook : Where should I get it?
-
To create your ownEngineering Notebook, you must do only one of the following (Note: each approach has it's own benefits and drawbacks) :
Create your own physical Engineering Notebook using a traditional pen & paper (3-ring binder or spiral notebook). You would then hand-write notes and/or use printouts then cut-n-paste paper into your notebook. Your Engineering Notebook would then need to be turned-in physically--on appropriate due dates--to your teacher for scoring.
-
Download a copy of Mr. Meinzen's Microsoft OneNote template for your Engineering Notebook. This can be found on Schoology for the course. You would then need to convert or export your Engineering Document to a PDF file to submit your PDF electronically (via Schoology) to your teacher by the due dates. ONLY non-editable & uploaded PDF files WILL BE ACCEPTED...NO LINKS, EMAILS, or other editable documents WILL BE ACCEPTED! Note: other students MAY, accidentally or intentionally, change Mr. Meinzen's template...be aware that YOU are responsible for your own Engineering Notebook...do NOT assume Mr. Meinzen will prevent all "hacking" of the template on Schoology.
-
Create your own virtual Engineering Notebook using Google Docs or another software of you choice. You would then need to convert or export your Engineering Document to a PDF file to submit your PDF electronically (via Schoology) to your teacher by the due dates. ONLY non-editable & uploaded PDF files WILL BE ACCEPTED...NO LINKS, EMAILS, or other editable documents WILL BE ACCEPTED!
-
-
Engineering Notebook : Why should I use it?
-
To keep a timely record of your progress during the full semester course as well as ideas, efforts, attempts, successes and failures for each project...the how, who, what, where, when, and why for each Project.
-
For official (i.e. permenant) record-keeping and as part of your evaluation/grade throughout semester.
-
Details to include for each Project in your Engineering Notebook:
-
Always include page heading with dates and project identification
-
Always include any collaborators names and properly cite resources...for phyiscal paper, use only the front side (save back side for possible edits at end of projects/course)
-
Include any important websites, login info, photocopies,submitted code, software/hardwar used (& version #), graphs, lists, equations used, and comments along with anything another student/teacher/manager may need to "recreate" your projects (i.e. if you get sick or retire or ...).
-
Details NOT to include in Engineering Notebook:
-
general notes from class...these should be in a regular course notebook
-
scratch paper even if for calculations...only final calculations/graphs and formulas should be included
-
-
Engineering Notebook : What should I include in it?
-
Front Cover: Your name, start date, end date (leave blank), course title, teacher name.
-
First Page: Table of Contents (just complete header...as you complete each Project during the semester, you must edit the Table of Contents)
-
Second Page: list of websites and registration info (logins & password if needed) used throughout AP CSP course...you may have to update this information as projects are completed. At a minimum, we will be using www.meinzeit.com, myAP.collegeboard.org, ecusd7.schoology.com, and www.ecusd7.org.
-
Third Page: Ordered list of scheduled items for the course. Include dates for official Assessments and Projects.
-
Starting Fourth page: COPY the list of all LO-EK statements (400+ lines) in your Engineering Notebook and start identifying the LO-EK's you already know.
NOTE 1 : The AP CSP course and EXAM is built around 5 Big Ideas [BI] broken down into 12 Enduring Understandings [EU] which are further broken down into about 100 Learning Objectives [LO] and 340 Essential Knowledge [EK] or "fact" statements you will learn and be assessed throughout the semester.
NOTE 2 : Be aware that the color-coded items on "Searchable Page" are NOT the same as our course projects. The color-code times such as P2: Algorithms and Program Development are refering to the 6 Practices and skills that you will be learning to DO (i.e. actions) throughout the semester by completing all projects.
The LO-EK list can be found either on Schoology under the heading of "Big Ideas...." or on Mr. Meinzen's website at this link : http://meinzeit.com/APConsult-CSP-1Day/LO-EK.htm
Place a "P0" by any [EK] you already have learned or know about from other courses or just information you have learned on your own or from others. As you complete each project, you will mark off additional LO-EK statements to keep track of your progess. By the end of the semester (i.e. after P9 or P10, the last project), you should be able to mark off all 400+ items on the list.
-
After the last LO-EK page : Prepare for the first project by by labeling the next page with the title of the project as P1 : Project 1 : Part I : Create Task I .
-
Engineering Notebook : How will I be scored?
Scoring Rubric : Engineering Notebook
Name _________________________________________________________________
Student Score
Maximum
Front Cover: Your name, start date, end date (leave blank), course title, teacher name.
5 pts
Table of Contents: header and list including start and end page numbers for the following:
- Registrations Info & Critical websites
- Schedule/due dates
- Requirements for assessments
- LO-EK statements
- Course Projects
-- see Learning Objectives & Essential Knowledge Statements (LO's & EK's)
5 pts
Registration Info (websites, login usernames & passwords):
- create a College Board student login (write down your username & password) for AP CSP [same account used for all your AP courses] at : https://myap.collegeboard.org/login,
- signup for the EHS AP CSP course by using the "join code" provided by your teacher using your College Board student login,
- register for the AP CSP Exam by October 15th [or March 13].
- access the AP Digital Portfolio via myAP.collegeboard.org to understand the assessment submission process needed in April
- List websites that are critical for completing AP CSP. This list will "grow" as each project is completed.
5 pts
Schedule:
- Titles and due dates for official AP CSP Assessments
- Official (or final) due date,
- Eexpected (or class) due date
- Titles and due dates (approximate) for all Course Projects
5 pts
Requirements for Official Assessments (highlight submission requirements)
- Create Performance Task
- Written AP CSP Exam
10 pts
LO-EK statements...start identifying EK's already known by you mark with a "0". Upon completion of each project, identify additional EK's by date & project number.
15 pts
Header for Project 1
5 pts
Project Total
50 pts
P0: Plan for the Create Task - The Programming Assessment
[30% of overall AP Score...minimum 12 hours of class time]
NOTE: You are NOT writing any programs at this time, you are simply reading about the expectations of the Create Task (Setup, Goals, Scoring) that must will be done later in the semester.
Before Create Task - Setup
-
REVIEW - Official Samples Tasks & Scoring on College Board's Website [may need to scroll down the page]
-
Setup an Online Account (if not already done!):
- Sign-up by the end of 1st week for a new student account on myAP.collegeboard.org website.
- Register by the end of 1st week with Mr. Meinzen's AP CSP course (MR. M will give you a Course Join Code)
- After you are done with your FINAL Create Task sometime in April, you must upload via your Digital Portfolio on myAP.collegeboard.org :
-
Video [V] of your program running
using a program like Screencast-o-matic.com
-
Write [IWR] (type or copy-n-paste) answers to 18 prompts ...make sure your name is NOT included on any information.
-
Code [PC} including all programs/classes you wrote) as a PDF (.pdf) file.
-
Information you should keep in mind.
Do NOT do your "final" Create Task too early (it is due in April). You (and your peers) will be given several samples to practice writing and scoring using the rubric below. You will also develop a mini-Create task to be scored by a peer before March. |
Your teacher CANNOT provide feedback or help score your real (or Final) Create Task prior to submission to the College Board. |
Recommended due date is 15April but final due date is 30Apr. |
Note: short, one-sentence answers are usually best. |
-
Definitions needed to be understood for the Create Task:
-
A computational artifact is a visualization, a graphic, a video, a program, or an audio recording that you [student] create using the computer. In creating a computational artifact, you should avoid plagiarism by acknowledging, attributing, and/or citing sources and including a with your submission.
-
AP Computer Science Principles Create Performance Task Terminology (in order of appearance in the scoring guidelines)
-
Input: Program input is data that are sent to a computer for processing by a program. Input can come in a variety of forms, such as tactile (through touch), audible, visual, or text. An event is associated with an action and supplies input data to a program.
-
Program functionality: The behavior of a program during execution and is often described by how a user interacts with it.
-
Output: Program output is any data that are sent from a program to a device. Program output can come in a variety of forms, such as tactile, audible, visual, movement or text.
-
Purpose: The problem being solved or creative interest being pursued through the program.
-
Program Code Segment: A code segment refers to a collection of program statements that are part of a program. For text-based, the collection of program statements should be continuous and within the same procedure. For block-based, the collection of program statements should be contained in the same starter block or what is referred to as a “Hat” block.
-
List: A list is an ordered sequence of elements. The use of lists allows multiple related items to be represented using a single variable. Lists are referred to by different terms, such as arrays or arraylists, depending on the programming language. In Java, an array of sorted Cards is a list.
-
Data has been stored in this list: Input into the list can be through an initialization or through some computation on other variables or list elements.
-
Collection type: Aggregates elements in a single structure. Some examples include: databases, hash tables, dictionaries, sets, or any other type that aggregates elements in a single structure. In Java, myDeck which is an arrays of Cards is a collection.
-
List being used: Using a list means the program is creating new data from existing data or accessing multiple elements in the list. In Java, myDeck[0] = new Card(0) would be "using a list" as you are assigning the two of Clubs into the first slot of the array or List.
-
Student-developed procedure / algorithm: Program code that is student-developed has been written (individually or collaboratively) by the student who submitted the response. Calls to existing program code or libraries can be included but are not considered student-developed. Event handlers are built in abstractions in some languages and will therefore not be considered student-developed. In some block-based programming languages, event handlers begin with “when”.
-
Procedure: A procedure is a named group of programming instructions that may have parameters and return values. Procedures are referred to by different names, such as method or function, depending on the programming language. In Java, any method is a procedure.
-
Parameter: A parameter is an input variable of a procedure. In Java, local declarations in a method header are parameters. Ex: public void setName( String n)... the n is the parameter.
-
Algorithm: An algorithm is a finite set of instructions that accomplish a specific task. Every algorithm can be constructed using combinations of sequencing, selection, and iteration.
-
Sequencing: The application of each step of an algorithm in the order in which the code statements are given.
-
Selection: Selection determines which parts of an algorithm are executed based on a condition being true or false. The use of try / exception statements is a form of selection statements.
-
Iteration: Iteration is a repetitive portion of an algorithm. Iteration repeats until a given condition is met or a specified number of times. The use of recursion is a form of iteration.
-
Argument(s): The value(s) of the parameter(s) when a procedure is called.
During Create Task - Goals
Create Performance Task : online submission by 30April, 30% of AP CSP score
-
[PC] Final Program Code (Independently or Collaboratively)
-
[V] Video displaying running of student program and demonstrates functionality student developed (created independently)
-
[IWR] Independently Written Response [750 word limit for combined written parts exclusive of Program Code] in 18 different text boxes with given prompts. Collaboration is NOT allowed.
- i. Describe overall purpose. Why did YOU write the whole program?
- ii. Describe functionality of program demonstrated in video. How does the program work as seen in your video?
- iii. Describe input & output of program demonstrated in video
- i. Code segment that shows how data have been stored in the list
- ii. A second code segment that show the data in the same list being used as part of fulfilling the programs purpose.
- iii. Identify the name of the list.
- iv. Describe what the data contained in the list represents.
- v. Explain how the selected list manages complexity by explaining why program could not be written, or how it would be written differently, if the list was not used.
-
i. Code segment developed by student that :
- defines procedure's name and return type (if necessary)
- Contains and uses one or more parameters that have an effect on the fuunctionality of the procedure
- Implements an algorithm that includes sequencing, selection, and iteration.
- ii. A second code segment that shows where the procedure is called.
- iii. [with part iv] Describe in general what identified procedure does and how it contributes to the overall functionality
- iv [with part iii] Explain in detailed steps how the algorithm implemented in the procedure works. Explanation must be detailed enough for someone else to recreate it.
- i. Describes two calls to the procedure identified in written response
3c. Each call must pass a different argument(s) that causes a
different segment of code in the algorithm to execute.
- First call:
- Second call:
- ii.Describes what condition(s) is being tested by each call to the
procedure.
- Condition(s) tested by the first call:
- Condition(s) tested by the second call:
- iii. Identifies the result of each call.
- Result of the first call:
- Result of the second call:
Part 3a. Provide a written response. Approx. 150 words combined in 3 subparts
Part 3b. Paste two program code segments that contains a list (or other collection type) being used to manage complexity. Approx. . 200 words combined in 5 subparts, exclusive of Code
Part 3c. Paste two program code segments that contains a procedure that implements an algorithm and a call to that procedure. Approx. 200 words combined in 4 subparts, exclusive of Code
Part 3d. Provide a written response. Approx. 200 words combined in 3 subparts.
After Create Task - Scoring
Name _________________________________________________________________
|
Classroom Score |
AP Score |
||||||||||
ROW 1 : Program Purpose and Function [4.A]:
|
10 pts |
1 pt |
||||||||||
ROW 2 : Data Abstraction [3.B]
|
10 pts |
1 pt
|
||||||||||
ROW 3 : Managing Complexity [3.C]
|
10 pts |
1 pt
|
||||||||||
ROW 4 : Procedural Abstraction [3.C]
|
10 pts |
1 pt
|
||||||||||
ROW 5 : Algorithm Implementation [2.B]
|
10 pts |
1 pt
|
||||||||||
ROW 6 : Testing [4.C]
|
10 pts |
1 pt
|
||||||||||
Classroom Requirement Only : Create Performance Task Submission Requirements:
|
Classroom Deductions |
AP CSP Scoring has no deductions |
||||||||||
Create Project Score : |
__/ 60 pts |
__/ 6 pts |
P1: Project 1 : Part I : Introduction to the Create Task
Learning Objectives - students will :
-
Review P0 : Plan for the Create Task - The Programming Assessment : Before Create Task - Setup
-
Evaluate a Sample Student's Create Task using the Chief Reader's Report on apcentral.collegeboard.org
-
Complete a practice Create Task : Individual Written Response (IWR) using a program from a language that implements a known algorithm and abstractions as coded in procedures and lists
- Java Code & Video provided by teacher:
- Deck.java : focus on the:
- Algorithms : "swap" basic algorithm or the "Bubble Sort" advanced algorithm with abstraction
- Data Structure : arrays as lists
- Abstraction : methods & parameters as procedures
- PokerGame.java : focus on the calling of the Deck.java code
- Deck.java : focus on the:
- Java Code & Video provided by teacher:
-
Complete an Individual Written Response (IWR) in your Engineering Notebook for Project 1. Refer to P0: Plan for the Create Task - The Programming Assessment : During Create Task - Goals
-
Add to Engineering Notebook a AP Score rubric (self-scored) for your IWR for Deck.java & PokerGame.java based on P0 : Plan for the Create Task - The Programming Assessment : After Create Task - Scoring
-
Submit Engineering Notebook for P1: Project 1 : Part I : Introduction to the Create Task
Note: Future options to develop and practice Create Tasks include:
- Project 4 : Internet : HTML & JavaScript
- Project 5 : Visualizations :Three Dimensional Programming using a Ray Tracer
P2: Project 2 : Numeric Systems & Math Theory : Binary, Octal, Decimal, & Hexadecimal
Summary :
Humans use numbers everyday. But what are numerals, number systems and how do we "use and communicate" via numbers?
Learning Objectives : Students will...
-
Test Questions: Multiple Choice. Must include 5 (or 4) options and one (or more) correct answers.
-
Test Questions: Short Answer with Solutions. May include fill-in-the-blank for longer questions.
-
Test Questions: Free Response. Must require student to write a solution to a problem either by
- giving a programming code for students to read and understand, or
- giving a arithmetic problem in several bases requireing students to write multiple mathematical steps accurately and with precision.
-
Kurt Godel's Incompleteness Theorem
-
Irrational and Transcendent (i.e. non-algebraic or non-polynomial) Numbers
-
HyperReal and HyperComplex Numbers, Superreal, Surreal Numbers, Rings, Fields, Quaternions, SuperNatural Numbers
-
Lambda-Calculus & Computable Numbers
-
Aleph Numbers - Cardinality (i.e. size) of Infinite Sets -
-
The Integers and the Natural Numbers have the same Cardinality (Aleph-null)
-
The Real Number System is "bigger" than the Integers (Aleph-one).
-
What has Cardinality greater than the Real Numbers?
-
Rudy Rucker's Book - Infinity and the Mind
-
First Fundamental Theorem of Arithmetic
- at least one fact with an inline citation that references at least one reliable and identifiable source placed as a footnote (this will be used to understand and avoid plagiarism in the course),
- where/how it the topic is used or discovered,
- the problem(s) the topic addresses (create at least one example math problem and solve the example),
- Your description should be in 3rd person (no "I" or "you"), 1 page long, double-spaced, 12pt, Times New Roman.
-
Procedure(s) to multiply by other than the given base.
-
Procedure(s) to divide by other than the given base.
-
Negatives in Binary (2's complement procedure).
-
Bitwise shifting operator by example (>>, <<, >>>, <<<)
-
Use the decimal point to indicate when bases switch from positive exponents to negative exponents.
-
Create a "times table" for Decimal, Binary, and for Hexidecimal digits.
-
Program a Number System Calculator in Java & Swing
-
Program a Number System Calculator in Javascript
- at least one fact with an inline citation that references at least one reliable and identifiable source placed as a footnote (this will be used to understand and avoid plagiarism in the course),
- where/how it the topic is used or discovered,
- the problem(s) the topic addresses (create at least one example math problem and solve the example),
- Your description should be in 3rd person (no "I" or "you"), 1 page long, double-spaced, 12pt, Times New Roman.
Convert : Numerals and Bases Conversions
Base |
Decimal (base 10) |
Binary (base 2) |
Hexadecimal (base 16) |
Octal (base 8) |
Example 1 - Convert each from Condensed Form to Expanded Form |
2579 |
1010 0001 0011 |
A13 |
5023 |
Example 2 - Convert from Hexdecimal (or Decimal) |
135 |
|
87 |
|
Example 3 - Convert from Binary (or Decimal) |
87 |
0101 0111 |
|
|
Example 4 - Convert from Hexadecimal (or Octal) |
|
|
CC02 |
146002 |
Assess : writing Exam Questions
Write 4 (or 5) questions on any of the above lectures and/or practice problems that you would expect to see on an AP Exam...this must be done by noting the appropriate Essential Knowledge (EK) statement that matches your Test Question.
Explore : Topics I : Numeric and Number Systems
[pick one from the following list]
Details of short description
Explore : Topics II : Numeric Operations (Arithmetic)
[pick one from the following list]
Details of short description
Instruction : a series of 4 Lectures will be given :
-
27 (Hindu-Arabic numeral system used in most modern societies)
-
twenty-seven (English-language based numeral system - verbal communications)
-
XXVII (roman numerals - old but not designed for computation)
-
0001 1011 (binary numerals - computer representations)
-
///// ///// ///// ///// ///// // (tally system - simple)
-
one score and seven (English ala Lincoln)
-
00:27:00 (sexagesimal system - based on degrees:minutes:seconds) and one of the oldest numeral systems in existence. Ancient Babylonians used to compute time, geography, and angles...base-60 avoids many issues with fractions/division due to the First Fundamental Theorem of Arithmetic)
-
1B (hexadecimal system which uses the digits 0,1..9,A,B,C,D,E,F
-
0 = {},
-
1 = {0} = {{}},
-
2 = {0,1} = {{},{{}}},
-
3 = {0,1,2} = {{},{{}},{{},{{}}}}
-
When we use numbers to "count" objects, we are referring to the "cardinality" property.
-
When we use numbers to compare ("bigger versus smaller") against objects, we are referring to the "comparison" property.
-
When we use numbers to label objects (like the list below) we are referring to the "nominal" property.
-
Natural Numbers (aka Counting Numbers)
- If used to describe the "size" of an object then we call the number a Cardinal such as 5 bananas [five is the cardinality of the set of bananas].
- If used to describe a property of an object for comparison purposes then we call the number a Measurement such as "I scored an 85% on the test." The 85% by itself does not mean anything unless we compare it to other scores. (If the measurement includes a magnitude and a unit--a word such as "meter"-- it is called a Quantity.)
- If used only as a label rather than for any calculations, then the Number is a Nominal such as this listing or numbering of the definitions for Cardinal, Measurement, and Nominal...we could have just used a bulleted list instead of a numbered list.
-
Integers - no fractions or decimals, includes positives, negatives, and 0.
-
Rationals (i.e. Fractions) + Irrationals (i.e. non-terminating, non-repeating decimals) = Real Numbers
-
Real + Imaginary = Complex Numbers (numbers that can go round-and-round)
-
A16 is 10 in decimal
-
B16 is 11 in decimal
-
C16 is 1 in decimal
-
D16 is 13 in decimal
-
E16 is 14 in decimal
-
F16 is 15 in decimal
-
1F3
-
[Hint: convert groups of 4 bits start at far right into 1 hexadecimal digit]
-
Watch "carryover"
-
132
+ 039 =
-
171
-
1000 0100 +
-
0010 0111 =
- ___________
-
1010 1011
-
8416 + 2716
=
-
AB16
-
Borrowing is a bit tricky.
-
egatives are in Explorations.
-
Subtraction is usually done using "adding by negatives" in binary
-
132
-
039
=
-
93
-
1000 0100 -
-
0010 0111 =
- __________
-
0101 1101
-
8416 - 2716 =
-
5D16
-
Multiplying by a base just "left shifts" the digits
-
Multiplying by digits other than the base is more complex and requires memorizing "times tables" for each base
-
13 * 102 =
-
13 * 100 =
-
1300
-
0000 1101 * 210 =
-
0000 1101 * 102 =
-
0001 1010
-
[hint: shift all bits left by 1 position, called "bit-shift" or << operator]
-
D * 16310 =
-
D * 100016 =
-
D00016
-
Dividing by a denominator that is a power of the base system will simply "right shifts" the digits of the numerator
-
Dividing by digits other than powers of the base systemis more complex and requires memorizing "times tables" for each base.
-
128 / 101 =
-
128 / 10 =
-
12.8 =
-
1*101+ 2*100 + 8*10-1
-
1000 0000 / 2110 =
-
1000 0000 / 102 =
-
0100 0000
-
80 / 16110 =
-
80 / 1016 =
-
816
Lecture 1 : Numerals : how we write/communicate numbers.
Example A - different ways to write the same Number (note: there are many more ways than the 8 listed here):
Example B - the numerals 0, 1, 2, and 3 in mathematical set-theoretic notation...uses only the three symbols: {,}
Lecture 2 : Numbers : how we use numbers to count, measure, and label objects.
Usually we just talk about "Number Systems" which are sets of numbers.
Lecture 3 : Numeral Base Systems : Decimal, Binary, Octal, and Hexadecimal Systems
Commonly Used Numeral Systems in Computer Science are:
Base |
Decimal (base 10) |
Binary (base 2) |
Hexadecimal (base 16) |
Digits (or Symbols) |
0, 1, 2, 3,..., 9 |
0, 1 |
0, 1, 2 ..., 9, A, B, C, D, E, F |
Condensed Notation |
499 |
1 1111 0011 |
|
Expanded Notation |
4*102 + 9*101 + 9*100 |
1*28 + 1*27 + 1*26 + 1*25 + 1*24 + 0*23 + 0*22 + 1*21 + 1*20 |
1*162 + F*161 + 3*160 |
Converting to Decimal |
400 + 90 + 9 |
256 + 128 + 64 + 32 + 16 + 0 + 0 + 2 + 1
|
1*256+15*16 + 3 |
Solution |
499 |
499 |
499 |
Lecture 4 : Arithmetic Operations : Decimal, Binary, and Hexadecimal Systems
Operation & Notes |
Decimal (base 10) |
Binary (base 2) |
Hexadecimal (base 16) |
Addition (+) |
|||
Subtraction (-)
|
|||
Multiply (*) by the Base Number
|
|||
Divide (/) by the Base Number
|
[hint: shift all bits right by 1 position, called "bit-shift" or >> operator] |
Scoring Rubric :
Name ________________________________ |
Points Assigned |
Date Assigned: ____________ |
1. Convert Practice Problems |
/ 20 |
|
2. Assessment - writing test questions [5 pts per question with answer] |
/ 20 |
|
3. Exploration I - Topic is _________________________ a) description b) at least 1 example math problem and solution (may be handwritten) c) 3rd person, double spaced, 12-point Times New Roman, 1 page d) fact with an inline citation to a reliable, identifiable source in footnote |
/ 20 |
|
4. Exploration II - Topic is _________________________ a) description b) at least 1 example math problem and solution (may be handwritten) c) 3rd person, double spaced, 12-point Times New Roman, 1 page d) fact with an inline citation to a reliable, identifiable source in footnote |
/ 30 |
|
Engineering Notebook - update of ToC, project header, important formulas/code, calculations, collaborators, notes, marking of Essential Knowledge statements, etc. [MAY BE SCORED LATER IN COURSE] |
/ 10 |
- 5 pts if late |
TOTAL NOTE: absence of inline citation to a reliable, identifiable source is ground for a ZERO on this section of project. College Board also imposes more strict penalties for plagiarism. |
/ 100 |
Date Due: ________________ |
P3: Project 3 : Data Representation & Encodings : Numbers, Colors, Characters & IP
Summary :
-
Computers store, retrieve and manipulate binary data.
-
Humans use mathematics and other encoding systems (i.e. human-based languages) to represent information.
-
Computer Scientists apply mathematics and other encoding systems (computer languages & protocols) to translate information into binary data to be processed by computers as well as decode the binary data into information that is useful for humans.
Learning Objectives : Students will...
-
Write a program that illustrates each of the 6 Sources of Errors. [50 points]
-
Write a program that converts floating point numbers (doubles?) to binary and vice-versa. Do NOT use Java's Integer, Float, or Double classes to parse the input due to miscalculations. Do USE arrays or ArrayLists of digits and write your own parse method using Strings. [50 points]
-
Write 5 floating point numbers in decimal and convert to IEEE754 binary representation. [5 points per number conversion, maximum 25 pts]
-
Write 5 IEEE754 floating point numbers in binary and convert to decimal representation (5 points per number conversion, maximum 25 pts]
-
List the IEEE754 floating point representations for the following unusual "numbers": NaN (not a number), 0, positive infinity and negative infinity. [25 points]
-
Write 5 multiple-choice or short answer questions with correct answers for a test. Note which Essential Knowledge (EK's) statement(s) matches each question. [5 points per problem, maximum 25pts]
-
Color Encodings [pick a maximum 1 of the following 5 options]
- Convert the following RGBA hexadecimal values: FFFFFFFF, 00000000, C0C0C000, 88000088, 00888888 into decimal and describe, in english, what color each represents. [ 4 pts each for max 25 pts]
- List the following colors in RGBA format using hexadecimal, decimal, and percentages: light-yellow, cyan, clear (no color), dark gray, light gray. [ 4 pts each for max 50 pts (Note: 4pts * 4 colors * 3 numbers = 54 pts)]
- List 5 examples for each of the 3 other color-encoding format/schema's besides sRGBA (i.e. CMYK, HSL, HSV) that are commonly used [3 pts each example, 5pts for clarity/organization, 50 pts max]
- Write a JavaScript or Java program to convert your own name (FirstLast) to a color schema (RGBA integer values) [50 pts].
- Write 5 multiple-choice-multiple-select or short answer questions with correct answers for a test. Note which Essential Knowledge (EK's) statement(s) matches each question. (5 points per problem)
-
Character Encodings [pick a maximum of 1 of the following 10 options]
- Write your own name (FirstLast) in ASCII decimal and hexadecimal encodings [25 pts]
- Write your own name (FirstLast) in Unicode decimal and hexadecimal encodings [25 pts]
- List the first 32 values of the ASCII
encodings and explain what any one of
the devices (listed below) will do with each of those 32
characters. Hint: several will be ignored by the devices
[25 pts]:
- printer,
- TTY device,
- braille reader,
- Computer (Unix-based OS)
- Computer (MS Windows-based OS)
- Internet protocol such as email/MIME, FTP, www or SMS
- List the 8 escape-codes in US-ASCII, and describe how they are used in a Java [25 pts]
- List the default text-based encoding that are used in XHTM, HTML5, MacOS, MS Windows, and Linux. [25 pts]
- Write a Java program using the 8 escape-codes [50 pts]
- Write a JavaScript program to convert 4-letter names to US-ASCII decimals. [50 pts].
- Write a JavaScript program to convert 4-letter names to Unicode binary. [50 pts].
- Write 5 multiple-choice-multiple-select or short answer questions with correct answers for a test. Note which Essential Knowledge (EK's) statement(s) matches each question. (5 points per problem)
-
Addresses : List the IPv4 and IPv6 addresses of 5 common websites including www.ecusd7.org and www.meinzeit.com [25 pts]
-
Convert : encode your own name (FirstLast) to Unicode values then to an IPv4 address. Note that there are multiple ways to accomplish this conversion. [25 pts]
-
Identify : list 25 commonly-used PORT numbers, the services (i.e. programs) assigned to them, and their purpose. [25 pts]
-
Identify : list 10 commonly used (or reserved) IPv4 addresses along with associated port numbers for a private network. For example: 192.168.0.1:53 is often the homeowners private router or host to the internet using port 53 (i.e. domain name service or DNS). [50 pts]
-
Program : write JavaScript program to convert your own name (FirstLast) to Unicode values then to an IPv4. Note that there are multiple ways to accomplish this conversion. [50 pts].
-
Synthesize : Write 5 multiple-choice or single-word questions with correct answers for a test. Note which Essential Knowledge (EK's) statement(s) matches each question.[5 points per problem, maximum 25 pts]
Explore : Topics I : binary encodings of numbers (select up to 2 topics for a maximum of 50 pts)
Explore : Topics II : encodings of colors and text (select up to 2 topics for a maximum of 50 pts)
Explore : Topics III : encodings on the Internet (select 1 topics for a maximum of 50 pts)
Instruction : a series of 3 Lectures will be given :
Lecture 1 : Binary & Introduction to Encoding Numbers
|
Computers |
Humans |
Numeral System |
|
|
Physical Representations |
|
|
Beginning Encoding
see...
|
|
Sources of Errors:
SUMMARY: Assume you (and everyone else) are wrong! |
|
|
...
|
Lecture 2 : Encoding Colors and Characters (Text)
Color Encoding |
Binary Representation |
Decimal Representation |
Notes |
|
|
|
|
|
|
|
|
Character or Text Encodings |
Binary Representation |
Decimal/Hexadecimal Representation |
Notes |
|
|
|
|
|
|
|
|
|
|
|
|
Lecture 3 : Encodings on the Internet : Ethernet, IP Addresses, Transmission Control Protocol(TCP/UDP), Domain Name Service (DNS) and the IETF
Top Level View - Network Models (OSI) & Network Topologies (numerous abstractions) |
Very Low Level View - Numeric (bytes) (little to no abstractions) |
Mid-Level View - Frameworks (some abstractions) |
Ethernet (eth0) Encoding |
Numeric |
Notes |
|
|
|
Internet (IP) Encoding |
Numeric |
Notes |
|
|
|
|
|
|
Scoring Rubric :
Student Name: _____________________________________________ |
|
Exploration I (Numeric Encodings - IEEE754) Topic and number _____________________________________________ Topic and number _____________________________________________ |
max 50 |
Exploration II (Color or Text Encodings) Topic and number _____________________________________________ Topic and number _____________________________________________ |
max 50 |
Exploration III (Internet Addressing & Protocols) Topic and number _____________________________________________ |
max 50 |
Engineering Notebook - update of ToC, project header, important formulas/code, calculations, collaborators, notes, marking of Essential Knowledge statements, etc. |
max 10 |
Project Total |
max 100 |
P4: Project 4 : Higher-level Protocols on the Internet, Objects, and Languages
HyperText Transfer Protocol (http), HyperText Markup Language (HTML), Document Object Model (DOM), and JavaScript as overseen by Internet Engineering Task Force (IETF)
Learning Objectives - students will:
-
Learn the basics of HTML tag structure & Document Object Model (DOM) :
-
Learn the basics of Javascript programming language as used in HTML & programmatically manipulating the DOM :
-
Learn the basics of Swapping, Looping, Conditionals, and Functions in Javascript within HTML :
Scoring Rubric :
Name ______________________________ |
Student Score |
Possible Maximum Score |
|
I. |
HTML -- Find Learning Objective (LO) associated with HTML tags -- Create an HTML comment tag identifying and addressing one Essential Knowledge (EK) statement from -- Create a paragraph (i.e. <P> tag) with an id attribute of "idLO631" identifying and addressing a 2nd EK -- CIRCLE in pen the id attribute and and mark with a"I". |
|
20 |
II. |
HTML -- Find Learning Objective (LO) associated with HTML tags -- Create a header tag with a class attribute of "classLO" and innerHTML identifying and addressing on EK -- Create a 2nd header tag with a class attribute of "classLO" and innerHTML identifying and addressing -- CIRCLE in pen the two class attributes and mark with a"II". |
|
10 |
III. |
DOM & JavaScript : ---- Find Learning Objective (LO) associated with HTML tags and write a JavaScript comment identifying and addressing an EK -- Write and call a JavaScript function that manipulates the DOM via id="idLO631" attribute. -- Write and call a JavaScript function that manipulates the DOM by changing the background color of all tags with the class="classLO" attribute. -- CIRCLE in pen the relevant JavaScript and mark with a "III". |
|
20 |
IV. |
Basic Algorithm: Swap. CIRCLE in pen the relevant JavaScript and mark with a "IV". |
|
10 |
V. |
Basic Algorithm: Conditional. CIRCLE in pen the relevant JavaScript and mark with a "V". |
|
20 |
VI. |
Basic Algorithm: Loop [include a comment about any other algorithm that was used within the body of the loop]. CIRCLE in pen the relevant Javascript and mark with a "VI". |
|
20 |
|
Engineering Notebook - update of ToC, project header, important formulas/code, calculations, collaborators, notes, marking of Essential Knowledge statements, etc. -- Use appropriate indenting in your HTML and JavaScript code/printout. |
10 |
|
|
TOTAL |
|
100 |
Instructional Design Technique
-
Demonstration and discussion of each objective via webpage using a browser and text editor (for source code)
-
By demonstrating the various features through an actual webpage/website, the students will gain insights into the interacting pieces (HTML, DOM, Javascript, webpage parsing & layout)
-
Demonstration of an advanced JavaScript program (analog clock)
- Debugging Hint: learn to use the debugging tool (F12) built into every browser...especially useful in Firefox and Chrome.
- Debugging Hint: instead of System.out.println("...") in Java, use console.log("..."); in JavaScript
- Debugging Hint: in the browser Debugging Tool (F12), learn to use the Console to identify JavaScript errors, network errors, CSS errors, security issues, and console output (from console.log() method)
-
Online resources & references
-
W3C Tutorial Wiki - official standards-based website
-
W3Schools.com - often-used resource for scripts & examples of HTML, DOM, JavaScript, CSS and other web-related details
-
Wikipedia DOM Entry (browser DOM history & other links)
-
Wikipedia Javascript Entry (JavaScript history & other links)
-
Javascript and the DOM - a Hierachy of Javascript Objects as connected to the DOM
-
Java and JavaScript - Ham & Hamsters (differences between Java and JavaScript languages)
-
JavaScript for New Developers who know at least one other language
-
Assessement Technique
-
Informal feedback during demonstration & discussion.
-
HTML + Javascript webpage assignment. Each student will select a webpage to create (HTML+Javascript) to accomplish goals agreed upon by instructor...tied to identifying and explaining one or more Essential Knowledge statements.
-
Instructor will guide the student assignment to require an artifact (webpage) that demonstrates student learning of each objective in an original way.
-
Instructor will guide the student assignment to avoid excessively difficult artifact that is clearly beyond the student's current ability.
-
Instructor will guide the student assignment to avoid "simplistic" artifact (i.e. mere copying of demonstration) that does not provide any clear evidence of student learning.
-
Student will read Learning Objective 6.3.1 and write HTML and JavaScript comments identifying and addressing two of the Essential Knowledge statements
-
The following must be demonstrated by each student:
-
Creating a basic webpage using HTML including an HTML comment
-
Creating an "id" and "class" attribute within 2 or more HTML tags
-
Manipulating the HTML tags containing one or more "id" and "class" attributes programmatically via Javascript including JavaScript comments.
-
Write the following algorithms (methods/functions) using Javascript to manipulate the DOM
-
swap
-
loop
-
conditional (if...then...)
-
Specifications
-
Turn in the HTML & Javascript source code on disk or printout
-
Print out this grading rubric.
-
Follow expectations for professional programming (commenting, indentation, etc.).
-
NOTE: JavaScript comments are similar to Java but HTML comments are actually tags (i.e. <!-- ... -->)
-
P5: Project 5 : Three Dimensional Modeling and Visualization usinga RayTracer (Pov-Ray)
[using a scene description language to create images]
Learning Objectives - Students will :
-
become familiar with a scene-description programming language used in a ray-tracer [PovRay.org] to create photo-realistic 3 dimensional images.
-
create a sequence of increasingly complex programs to learn the fundementals of a scene description language
-
write traditional computer language algorithms such as loops, conditionals, variables and abstract constructs (objects)
-
investigate more complex and abstract 3 dimensional mathematical constructs such as animations (time-dependant) or constructive solid geometry
Scoring Rubric
Name ________________________________ |
Approval |
|
Image # 1 - box, sphere, plane, cylinder; |
X |
30 |
Image # 2 - |
30 |
|
Image # 3 - |
30 |
|
Engineering Notebook - update of ToC, project header, important formulas/code, calculations, collaborators, notes, marking of Essential Knowledge statements, etc. |
10 |
|
Project Total |
100 |
Instructional Design Technique :
-
Illustration of the Hall-of-Fame winners hosted at http://hof.povray.org/
-
Demonstration of a basic scene description program featuring:
-
Setup : Camera, Light Source, and a Plane with color and translation
camera { location <-5,3,-20> look_at <0,0,0>
} light_source { <0,10,-10> rgb <1,1,1> } plane { 1*y, -1 pigment { color rgb<0,1,0> } translate <0,-2,0> } -
Declarations and invocation of variable representing objects. Constructive Solid Geometry (CSG)
#declare myBox = box { <-1,-1,-1> <1,1,1> pigment { color rgb<1,0,1> } } #declare mySphere = sphere{ <0,0,0>, 1.25 pigment{color rgb<1,0,0> }} myBox // call or draw myBox mySphere // draw mySphere // Consructive Solid Geometry (CSG) #declare cutOut = difference { object {myBox} object {mySphere} } object {cutOut, translate<-5,0,0>} // draw the difference between myBox and mySphere
-
Use of a loop construct [algorithms]
#declare ycnt = 0; #declare xcnt = -5; // INITIALIZE the Loop Control Variable (LCV) #while(xcnt < 10) // TEST the LCV object { cutOut // declared before as a difference of myBox-mySphere translate<xcnt,ycnt,0> rotate <0,ycnt*10,0> } #declare ycnt = xcnt*xcnt + 1; // calculate the parabola #declare xcnt = xcnt + .25; // UPDATE the LCV #end
- Use of macro (i.e. procedure) with parameters, vector/list, and algorithm
camera { location <-7,3,-7 > look_at < 0,0,0> } light_source { < 0,10,-10> rgb < 1,1,1> } plane { 1*y, -1 pigment { color rgb <0,1,0 >} translate <0,-2,0 >} cylinder { <-10,0,0 > <10,0,0 > .1 pigment{ color rgb <1,0,0 >}} cylinder { <0,-10,0 > <0,10,0 > .1 pigment{ color rgb <0,1,0 >}} cylinder { <0,0,-10 > <0,0,10 > .1 pigment{ color rgb <0,0,1 >}} #declare ball = object {sphere{ <0,0,0 >, 0.05}}; /**
* Declaring a macro called "sphereVector" is a procedure or method
* with parameters (i.e. variables)
* that can be used anywhere in the macro.
* PARAMETERS:
* c1 is a color vector in the form <r,g,b>
* xs is a number that represents the starting x-coordinate of the image
* ys is a number that represents the starting y-coordinate of the image
* Zs is a number that represents the starting Z-coordinate of the image
*/ #macro sphereVector(c1,xs,ys,zs,num) #local EndXcoord = num+xs; #local EndYcoord = num+ys; #local EndZcoord = num+zs; #local Xcoord = xs; #while (Xcoord < EndXcoord) #local Ycoord = ys; #while (Ycoord < EndYcoord) #local Zcoord = zs; #while (Zcoord < EndZcoord) object { ball translate <Xcoord*0.5 Ycoord*0.5 Zcoord*0.5> #if ((Ycoord > 5) & (Zcoord >-3))
pigment {color rgb c1}
#else
pigment {color rgb c1+<0,1,0>} // add colors
#end } #local Zcoord = Zcoord + 1; #end #local Ycoord = Ycoord + 1; #end #local Xcoord = Xcoord + 1; #end #end // this macro can be called sphereVector(<0,0,1>,0,0,0,10) //blue, starting at <0,0,0> with a "10-ball" cube
sphereVector(<1,0,0>,-5,-2,-6,3) //red, shifted <-5,-2,-6> with a "3-ball" cube
sphereVector(<1,0,1>,-5,4,7,4) //purple, shifted <-5,4,7> with a "4-ball" cube - Use of animation (i.e. clock variable, frames, and ini files)
- PovRay does NOT do animation directly. Instead, PovRay will automatically generate a sequence of images (i.e. image1.gif, image2.gif, etc.) called frames using a special automatic "clock" variable. In order for PovRay to generate multiple frames, a separate file called an "ini" file specifies the PovRay file to generate as well as specifying the number of frames and the start/stop clock timings.
- The code below shows the two files (i.e. animationPOV.pov and animationINI.ini). Note that the animationINI.ini file has a different syntax and structure than the animationPOV.pov file. As well, the animationINI.ini file specifies the number of frames and start/stop clock variable as well as "running" the animationPOV.pov file. The animationPOV.pov file uses the "clock" variable to change aspects on a per-frame basis.
This is the animationINI.ini file : specifies frames, and clock start and stop times as well as input and ouput files.
; this is an INI comment (semicolon)
; this file should be saved as "animationINI.ini" for use in POVRay
Initial_Frame = 0 ; matches clock variable so clock step per frame
Final_Frame = 10 ; = 1.0/(Final_Frame-Initial_Frame) = 1/10
Initial_Clock = 0.0 ; keep default = 0.0 and have PovRay file use a different startClk
Final_Clock = 1.0 ; local variables (like endClk) to control actual animation
Output_File_Name= animation.png ; files named animation0 to animation10
Input_File_Name = animationPOV.pov ; PovRay file to renderThis is the animationPOV.pov file : uses clock variable to control values for translating, rotating, and color over time
// This is the animationPOV.pov camera { location <-7,10,-20 > look_at < 0,0,0> }
light_source { < -7,10,-20> rgb 2*< 1,1,1> }
/* The following includes use of the clock variable in a translation up, rotate around y-axis and
* changing colors (light purple to dark purple */
#declare startClk = 1.0; // assume animationINI.ini file specifies clock variable going from 0.0 to 1.0
#declare endClk = 10.0; // controls what time will myClock end at
#declare myClock = startClk + (endClk-startClk)*clock; // scale the clock variable
// now declare our objects and apply myClock to the animation #declare ball = object {sphere{ <0,0,0 >, 0.5}};
object {ball translate<0, 10-myClock, 0> rotate<0,36*myClock,0> pigment{color rgb<2/myClock,0,2/myClock>}}
// show the ground and 3 axes
plane { 1*y, 0 pigment { color rgb <0,1,0 >} translate <0,-5,0 >}
cylinder { <-10,0,0 > <10,0,0 > .1 pigment{ color rgb <1,0,0 >}} // x-axis is red
cylinder { <0,-10,0 > <0,10,0 > .1 pigment{ color rgb <0,1,0 >}} // y-axis is green
cylinder { <0,0,-10 > <0,0,10 > .1 pigment{ color rgb <0,0,1 >}} // z-axis is blue
-
-
Illustration of Advanced modeling & visualization techniques [i.e. advanced algorithms] hosted at:
- Germany - Tutorials & Examples - Friedrich A. Lohmueller
- Japan - Gallery with Examples - Tsutomu Higo
Instructions :
-
Using the POV-Ray program and the scene description language, create a series of 3 dimensional graphic images.
-
The first image should be an include: 1) box, 2)plane 3) sphere, and 4) cylinder. You may use Mr. Meinzen's website and POV-Ray tutorial for help or generate your own.
-
The 2nd image requires a more complex design of your choice. Discuss and get prior approval from Mr. Meinzen before starting. The 2nd image will require the use of at least one of each of the following algorithms: loop, conditional (if...then), variable declaration, and declared object. Specify in your code's comments how you used abstraction and algorithms within your 2nd image.
-
The 3rd image(s) may be either an animation or require a complex POV-Ray mathematical feature...see below. Discuss and get prior approval from Mr. Meinzen before starting. Specify in your code's comments how you used abstraction and algorithms within your 3rd image.
Specifications :
-
First image due within 3 days of assignment
-
2nd and 3rd images due as discussed and approved by Mr. Meinzen
-
Alternative images / graphics and grading may be allowed with discussion and approval by Mr. Meinzen.
-
A Hardcopy (i.e. printout) of the above rubric, your source code, and image is to be turned in for Mr. Meinzen to score.
-
Commenting, indenting and choice of appropriate variable names will be included in the scoring.
-
Any student who loses or does not get pre-approval before an image is due will receive only 50% credit.
Notes
Educational Websites |
2nd Image Ideas |
3rd Image Ideas |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Big Projects for 2nd & 3rd images |
||
Other Computational Science Projects
Look at each the following decision-making algorithm as applied to life-choices. Investigate one topic and write a single-page paper illustrating how the algorithm is used in your (or your family's) life.
Synopsis of Algorithms to Live By: The Computer Science of Human Decisions by Brian Christian and Tom Griffiths.
- Choosing only the Best: when to stop looking and decide... the "37% Rule"
- Situation: We have to make a single "best" decision out of several potential choices. Unfortunately, we can only select or reject each choice one at a time before we can consider the next choice.
- Computer Science Perspective: "Optimal Stopping Algorithm" and "Secretary Problem"
- Estimate the total number of options (or estimate time spent looking/waiting or estimate the "cost" of looking/waiting).
- Do not select the first 37% (actually the percentage is exactly 1/e) of the options and, instead, learn from the first 37% of those options (called: .
- After learning as much as you can from the first 37%, choose the first option that is "better" than any of the first 37% you've already seen.
- Real-life Example:
- You want to buy a house in a "hot market" and another person may buy the house later that day. How do you decide to make an offer on the "best" house? If you wait too long, you will lose the house to another buyer.
- Interviewing candidates one-at-a-time and deciding whether to offer a job to them or to look at the next candidate?
- You can date as many people as you like but only one at at time. How do you decid which person to marry?
- You want to sell your house but can only consider one offer at a time. How do you determine to accept a "good" offer or wait for a possible 'better" offer?
- When you are deciding on a parking space in a crowded lot, do you select the first free spot or keep driving to get a potentially better spot?
- Choosing Latest versus the Greatest: when to explore new options and when to use the known favorites
- Situation: We have to decide when new experiences should be chosen over a existing favorites. Should we go to a new restaurant or an old favorite restaurant?
- Computer Science Perspective: Use the "Win-Stay Lose-Switch Algorithm", "Bandit Problem", and "Prisoner's Dilemma" to minimize regret. Or, for more complicated decisions, use a "Gittins Index" which stands for "git while the gittens good."
- Real-life Example:
- For "better-than-random" choices: You are at a casion using a gambling machine (one-armed bandits). You should keep using the same machine until you lose. When you lose the first time, you switch to another machine and keep playing it until you lose. Then switch to a 3rd machine, and so on.
- When to try a new selection: You have a favorite restaurant but, at the first bad meal, you switch to another new restaurant.
- When deciding to leave a well-paying job for a risky adventure, consider which option-when you are 80-years-old-would cause you to have the least regret...the minimal regret option becomes your decision
- In clinical trials, hisorically two groups are
created. One is a control group that receives a plecebo
(fake pill) will the other group is the expermental
group that gets the new medicine. After a set period
of time, the results of each group are analyzed to
determine the likelihood of the effect of the medicine.
However, this may be immoral in life-and-death situations such as new treatments to save babies lives. A newer statistical approach is to use "adaptive" trials. See ECMO research and the "Tuskegee Suyphilis Study" - Making Order out of Chaos: when to keep things sorted and when not to sort
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Forget about it: when is too much information not worth keeping
- Situation:
- Computer Science Perspective:
- Real-life Example:
- First things First: why we set priorities
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Predicting the Future: using Bayes's Rule
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Overfitting to the Data: when to stop thinking so hard
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Relaxation: when to make things easier by loosening the rules
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Randomness: some things are best left to chance
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Networking: how do we connect
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Game Theory: looking into the minds of others
- Situation:
- Computer Science Perspective:
- Real-life Example:
- Computational Kindness: going easy on others
- Situation:
- Computer Science Perspective:
- Real-life Example: