Getting Starting with Solving Mazes
Soon we will be doing more challenging Mazes here : https://mrmonline.org/maze-activities-1/
The Economy
Getting Starting with Solving Mazes
Soon we will be doing more challenging Mazes here : https://mrmonline.org/maze-activities-1/
The Economy
Create a maze along the lines here https://mrmonline.org/maze-activities-1/ , https://mrmonline.org/mazes-3/
Your maze should be able to be solved by 1 loop. You are allowed to add a few lines after the loop to “clean up” the solution if you want but the bulk of the maze should be solvable using a single while loop.
Submit both the map and your solution.
Let’s write a program for something like PowerSchool that helps organize a seating chart for students. There is a tester file at the page’s bottom.
First class : Student , from https://mrmonline.org/student-class/
Class SeatingChart
This class mainly manages a 2-d array of student objects. Note: an empty seat in the chart will be designated by a null value.
1 2 3 4 5 6 |
private Student[][] chart ; // rows and columns for where kids are private String rosterName; //name of this roster private String teacherName; private int period ; //which period is this chart associated public static final int DEFAULT_ROWS = 10; public static final int DEFAULT_COLS = 10; |
public String getTeacherName() // returns teacherName
public String getRosterrName() // returns rosterName
public int getPeriod() // returns period
public int countEmptySeats() ; //returns the number of empty seats. As noted earlier, an empty seat is represented by a null value in the 2-d array of student s
Student[][] getStudentChart() @returns chart
public int[] indexOf(Student stu); returns a 2 element array representing the row and column position of stu in chart ; [-1 , -1] should be returned if stu is not in chart
public boolean setSeat(int row, int col, Student stu) - places Student Stu at that row and column . This can only be done if there is no student in that location. If a student already inhabits that row and column then the method should return false and not make any changes to chart .
public void swap(Student s1, Student s2) // this swaps the locations of s1 and s2
public Student getStudent(int row, int col) returns the student at the given row and col ; or null if the seat is empty
public void removeStudentAt(int row, int col) sets value of object at row and col to null
public boolean equals(SeatingChart other) // returns true if all aspects of other are equivalent to self.
public void colMajorForm() . This prints out the student chart in column major form. Examine the diagram below showing an example seating chart on the left and the printed output on the right.
public String toString(); //follow the conventions we have been using. When you print out the chart , let’s show "E!" t o indicate an empty seat; for seats with students, just display their name.
public Student oldest() // returns the student object with the greatest age
Extra credit
public void randomize() // this randomizes the chart. Please be prepared to meet with me to discuss your code. (You cannot use a library to do all the work, if such a library even exists)
SeatingChartTesterv2.java :
CMU
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/