Intro to CS
Creative Task #1
Parameters:
- Minimum of 10 lines to draw a picture
- 4 shapes
- gradient
Below are examples of projects that got full credit
Complete all the methods below. When you are done, copy and paste the testmethods.v4 into your class and run it to see if you have any obvious errors.
int sumEveryN(int[] nums, int n)
Description: This method returns the sum of every
n
elements ofnum
s..
Method Call | return value/output |
sumEveryN( {1 , 2 , 3 , 4 }, 2 ) | 4( ie 1 +3) |
sumEveryN( {13 , 42, 15, 33 , 44 , 16 , 52} ,3) | 98 ( ie 13 + 33+ 52) |
String[] doubleArr(String[] strs)
Description: This method returns a new version of
strs
in which each element now appears twice. This can be done with a for-each loop, which I believe is easier and more intuitive.
Method Call | return value/output |
doubleArr( {“a”,”b”,”c”} ) | {“a”,”a”,”b”,”b”, “c” , “c”} |
doubleArr( {“math”,”ware”,”house”,”.com” }) | {“math”,”math”,”ware”,”ware”,”house”,”house”,”.com”, “.com”} |
int indexOf5(int[] nums )
Description:This returns the index of the first occurrence element 5 or -1 if 5 does not appear anywhere in the array.
Method Call | return value/output |
indexOf5( { 2 , 3 , 5 , 4 } ) | 2 |
indexOf5( { 2 , 3 , 5 , 4, 5 } ) | 2 |
indexOf5( { 2 , 3 ,7 , 4, 3, } ) | -1 |
More Sample calls and return vals
int indexOf(int[] nums, int num)
Description: This method returns the index value of the first appearance of
num
or -1 ifnum
is not an element ofnums
.
Method Call | return value/output |
indexOf( {6,4 ,7,3, 4 }, 4) | 1 |
indexOf( {6,4 7 ,3,2,7}, 7) | 2 |
indexOf( {6,4 ,2,3}, 22) | -1 |
int[] randos(int start, int end, int howMany)
Description: This method returns an array of random numbers between [start,end] . Note make sure that each element in the new array attempts to make a new random int.
double meanBetween(int[] nums, int min, int max)
Description: This method returns the mean of nums ; however, this method only counts values within the range (min,max) as shown in the examples below:
int secondSmallest(int[] nums )
Description: This method returns the element of
nums
with the second smallest value.Note: You may not modify the input array. For instance, you may not put nums in order, which would be bad because you were not asked to modify the array.
@precondition: nums.length >= 2
Note: You will lose credit if you use a constant to represent the smallest or second smallest number. See pseudocode
Method Call | return value/output |
secondSmallest( { 2 , 18 , 22, 4 , 6 } ) | 4 |
secondSmallest( { 3 , 7 , 15 , 1 ,101} ) | 3 |
1 < base < 11
num1.length = 5 and num2.length = 5
Description: This method attempts to replicate addition. Consider both num1 and num2 represent the five digits of a number. Each element in the array stores one of the digits. For instance, the number 143 would be represented as {0,0,1,4,3 }. Numbers can be in any base between 2 and 10 inclusive , and the number 101102 in binary would appear in an arrays as : {1, 0, 1 , 1, 0 } . Let’s assume the numbers are positive. You should return an array representing the digits of the sum of num1 and num2. You may not do any math besides addition. You may not use any external libraries for any math or base conversions. If the number of digits in the sum exceeds the maximum number of digits (5) , you should throw an arithmetic exception as shown in the code below:
12 if(overFlowAdditionOccurred)throw new ArithmeticException("Addition Overflow Error");
Note: You may not use any kind of helper or utility methods that are built into pre-defined Java classes for converting numbers between bases. Only use techniques taught in this class.
Method Call | return value/output |
add( {0,0,0 ,4,2},{0,0,0,5,1}, 10) | {0, 0, 0, 9, 3} ie (42 + 51 = 93) |
add( {0, 0, 0 ,7,2},{0,0,0,5,1}, 10) | {0, 0 , 1 , 2, 3} ie (72 + 51 = 123) |
add( {0, 0 , 0 , 1 , 1}, { 0 , 0 , 0 , 1 }, 2) | {0, 0 , 1 , 0 , 0} ie ( 112 + 12= 1002 ) |
Old versions:
Exercises for String 1 and Array 1 (no loops)
When you are done, you can copy and past the score() method below into your class. It will test some (but, by no means all) of the things that your code should do
Create a class called StrArr1 and add each method below into it.
For the absVals() method below use the Math.abs() Java method.
For the randos1to10() method below use the Math.random() Java method. Create a new array to store random integers. Each integer should be [1,10]
It is very rare that I recommend anyone skip from the Intro class, the easiest CS class, to SUPA, the hardest CS class , without the foundation that we build in Computer Science II.
The path to skipping
If you really want to try to skip CS II, the path would be to complete the online component of CS II curriculum during the school year and to then sit down with me for an interview. If I am satisfied that you are ready to skip CS II, I will then make the recommendation.
Much, though not all, of the CS II curriculum is online and so can be completed at a student’s convenience.
Please know, that most of the students who have followed this path and who found the Intro to CS class too easy and who then skipped into SUPA have ended up regretting this and, more often than not, they have had to drop the SUPA class.
Ask yourself– Would you skip Calculus I and instead jump right to Calculus II?
Probably not.
And it’s not much different here; while it has been done, for the most part it has only been successfully pulled off by students who are “hardcore” programmers and who have voluminous experience coding outside the classroom. Kids who have made their own apps and learned how to do real programming on their own.
Now, if that describes you and you have made real apps that you can show, then maybe this is the right move, but otherwise, this jump almost never is.
So, what students should do is this – Have your guidance counsellor sign you up for CS II for next year. If you complete the online part of the CS II curriculum, by June, then we can sit down and I will have an assessment of your readiness to make this radical jump.
Normally we dedicate an entire quarter to a project. We will instead be dedicating about 2/3 of the quarter.
The parameters are similar but not quite so grand in scope. To get an A, you must create a complex web product . This could be a single interactive application or multiple pages . Simple ideas to get to that point include:
Ways to add complexity:
Everybody must use git and have at least 20 commits over the span of the rest of the quarter.
Examples of finished product and grades:
Mr Morris, I just want to pass.
Objective: To create a complex, industry level, project that builds off the skills we learned this year. You must learn at least one new technology . Your grade will be based on the level of complexity of your final project. I have listed some examples of technologies to learn and rated their general complexity. Ultimately, complexity will be evaluated by me and you are welcome to ask for feedback on where the complexity of your project will land you.
Links and Resources for learning Phaser
Note: I am not familiar with many of the technologies below. The purpose here is for you to learn something, yourself, as web developers are often forced to do in the real world. If you think you will need help, I suggest going with Phaser because most students will do it and you can help each other . I have limited knowledge of Phaser.
Technologies
Phaser ( The most popular 4th quarter project topic is to create phaser games housed in a bootstrap based website). There is a great range in complexity that using Phaser allows for
Example Projects, probable complexity and grade.
The table below lists technologies you can use and provides a general guideline for its complexity and likely grade outcome. If something is classified as an “add-on,” then it is a way to increase complexity but should not, in and of itself, be considered complex enough on its own.
Often the grades are a “range” because it depends on what, ultimately your project does. Take “vue” for instance. This is a very popular, very modern javascript framework so it can be quite complex, but ultimately it depends on what your program actually does that will determine the final grade.
Technology | Complexity | Complexity lvl | Grade |
Phaser (meh) | Edits one of the pre-built games on phaser.io, nothing much new | very low | C |
Phaser (moderate) | Creates one new game, but it is relatively simple (asteroids) and submits 1 page website that uses bootstrap | Moderate | B- |
Phaser (good) | Creates completely new complex game (maybe uses physics or other unique coding) | moderate-high | B+/ A |
Node.js/Gulp | Learns how to use nodejs and employs Gulp to improve workflow | Moderate | add on |
Remote git | Learns how to push and pull from remote git repo on github | low | add-on |
Vue | Learns how to use the vue.js framework for javascript development | high | B /A- |
Foundation | Learn a bootstrap alternative and create several web pages | moderately low | C+ |
Angular | Creates a multi page website with the angular .js framework | high | B/A |
Mathjax | Learns how to integrate the Mathjax math library for rendering professional looking mathematics | low | add-on |
Vim | Consistently edits with Vim . I will quiz you on how to use VIM and I will expect to see you editing with VIM during class | moderate | add on |
List of other utitlites and libraries to use:
Notes: these can be combined to add complexity and professionalism. For instance, you can create a multipage website based on Vue and some of the pages can house phaser games that you create. This has the potential of an A+, assuming the Phaser games are original.
Not comfortable with Programming? Here is a multi technology example that will get a B:
This is an example that will get people who are not very comfortable with programming into the “B” range: Learn how to use Foundation, or another bootstrap alternative, and also how to integrate Mathjax to display math equations. You can create a multi page math website full of equations. You could add using remote git or Gulp to get the grade up even a bit more.
Javascript framework comparisons : https://www.codeinwp.com/blog/angular-vs-vue-vs-react/
Phaser
http://phaser.io/learn/ ( Where you should start)
Prior Projects: https://mrmonline.org/supa-2019-games/
Deliverables:
I have been asked “How many examples should I have”?
And there is no one answer. You should convey the “major important” aspects. Absolute bare minimum is 5 code examples but there is no need to kill us with redundant code that only has small changes.
bootstrap.topics.txt (dropbox.com)
1 2 |
$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com |
Create a new text file and add the code below. Then rename the file so that is a batch file. (ie. that its file extension is “.bat” instead of .txt) .
1 2 3 |
cmd.exe /k "cd C:\Users\path\to\websites\UniserverZ\www\ & git status" pause > nul |