UPDATE-01 (11/29/14): Originally posted 12/14/13, what follows is a description of what we did for CS ED Week, aka The Hour Of Code, aka Admiral Grace Murray Hopper Day, aka Lady Ada Lovelace's Birthday last year. This year we are doing much the same thing. Our goal here is twofold. (1) Promote Computer Science Education in general. (2) Recruit more students for the APCS class next year!
UPDATE-02 (12/1/14): Last year was based on this Hour Of Code Tutorial from codehs.com. This year I'd like to try this or this tutorial from code.org. I'm having a problem with the new tutorials. They load fine at home, but take forever to load in school. So, I'm downloading the whole thing to run locally on each of my student PCs! I used the following commandline to download the webste recursively,
UPDATE-03 (12/5/14): I'm not getting very far with code.org as yet. I'd like to do the code.org tutorials with my AP classes as they saw the codehs.com tutorials last year. Also, code.org has an Angry Birds tutorial and and a Disney's Frozen tutorial. So, I can do one in the morning with AP Calculus and the other in the afternoon with AP Computer Science as I have some of the same students in each. For students who have not done The Hour of Code with me, codehs.com's Karel the Dog is an easier intro. Codehs.com has two new tutorials. One is on mySQL and Harry Potter which is a little dry. The other is on making graphics with JavaScript which is a little challenging. I also like the code.org tutorials because they feature experts in the video tutorials like Bill Gates and Mark Zukerburg teaching about if/then/else branches and repeat/until loops! Here's some videos from code.org:
Admiral Grace Murray Hopper is one of my personal idols! Not only did she usher in the entire industry of Software Engineering but she single handedly invented Computer Programming Languages and Compilers! She was a Math Professor, a Naval Officer, the developer of COBOL and an all around class act!
Grace Hopper's birthday was Monday 12/9. To honor her memory, I registered all my classes for an Hour Of Code. Maybe you'd like to participate as well? The Hour Of Code is about exposing as many students as possible to Computer Science in all disciplines. I'm making this presentation during course selection week as well to encourage students to take Computer Science at my High School! Due to budget cuts, teacher layoffs, large class sizes and canceled electives, I'm recommending Honors 9th Graders take AP Computer Science next year. I used to recommend an intro course, but I can't anymore....
CSEDWEEK was an unprecedented international effort. Over 15,000,000 students at more than 30,000 locations (mostly schools) in nearly 200 countries were registered to participate sometime during last week and wrote more than 500,000,000 lines of code!
I teach Computer Science and see it as a great tool in all disciplines. It's a shame that more students don't take Computer Science in High School. Taking Computer Science can lead to a great major in college and a great profession! I also use Computer Science in all my Math and Science courses in High School and College!
I've been teaching people how to code since 1975. I've also been teaching AP Computer Science at the High School level since 1984. Finally, I've been teaching computing at the College level since 1993. Needless to say, I'm a vehement advocate for a strong Computer Science Education in particular and a challenging STEM curriculum in general for every High School student. In fact, every single class I teach, every single day of the week, is devoted to some aspect of STEM! STEM stands for "Science, Technology, Engineering and Math." Actually, I try to incorporate STEAM into my classroom: "Science, Technology, Engineering, Arts and Math." By Arts I do mean Art (fractals, 3D graphics, animation) but I also try to tie in plenty of History, Literature and Culture.
Mine is one of the few High Schools in the USA to offer a Computer Science curriculum! CS50 at Harvard, see playlist above, covers a lot of the same material we cover here at Baldwin Senior High in my AP Computer Science class. They use Scratch, C, php and JavaScript whereas we use Python, SAGE, MPI and Java, but the concepts are the same! Sadly, the United States is falling far behind other countries in training professionals for jobs in the 21st Century that will require this skill more and more! So, in answer to this growing demand, here's what I teach (in addition to Math and Science): Intro to Computer Science (python):
HOUR OF CODE Instructions for Monday's tutorial: (1) Each student should go to http://codehs.com/hourofcode (2) Sign up for CodeHS using this code: F2B9 (3) Start learning! You will be completing a tutorial on programming for beginners. Fun will be had by all! Course Selection Week DropBox! Well, that's all folks.
Yeah, Quarter II has begun! Over the past 2 weeks we completed Lab 04. This lab was primarily about data types. We talked about the differences between byte, int, long, float and double. We also worked with different forms of input: args, JOptionPane and Scanner. We played with finals and casting. We even used Integer.parseInt() and Double.parseDouble().
YOUTUBE WEDNESDAYS:
Since we're doing Conic Sections and Planet Orbits in preCalculus, it's time for our Astronomy related YouTubes! We had 2 guest speakers talk about the Asteroid Apophos and its flyby in 2029!
Week1: Neil deGrasse Tyson!
Week2: Bill Nye the Science Guy?
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 04
Quarter I Weeks 9&10 Data Types!
10/27/14-11/07/14
Yeah, Quarter I is done! We finally finished LAB03 writing our own constructors, accessors, mutators and javadoc. We also did all we could with BIN, OCT, DEC and HEX as well as Truth Tables and Circuit Diagrams! Now we start LAB04 using int, short, byte, long, float and double. We also talked about java.lang.Math!
We also discovered a YouTube kindred spirit in CS50 at Harvard. They are doing a lot of the same material we are doing except they use a virtual machine install of Fedora Linux on their MAC or WIN laptops and they start out programming in Scratch and C! We use a native installation of Ubuntu Linux on our PC Desktops and Oracle's JDK.
CS50 LECTURES:
CS50 SECTIONS:
CS50 PROBLEM SET WALKTHROUGHS:
YOUTUBE WEDNESDAYS:
Since we're doing Conic Sections and Planet Orbits in preCalculus, it's time for our Astronomy related YouTubes! We started by talking about really big and really small numbers and metric prefixes.
Week9: NEW Powers of Ten.
Week10: Original Powers of Ten.
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 03
Quarter I Weeks 7-8 Name That Number!
10/13/14-10/24/14
We finished Object Oriented Programming Lab03 (OOP: creating our own classes). Then we started a unit on arithmetic in bases other than 10! I call this unit "Name That Number" especially at the begining of the unit when all we do is convert to and from base 10. The students were particularly baffled when a terminating rational number in one base converted to a repeating rational number, or even an irrational number, in another base!
YOUTUBE WEDNESDAYS:
If it's October, it's gotta be Admiral Grace Murray Hopper!
Week8: Walter Isaacson on CBS Sunday Morning (from my DVDR).
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 03
Quarter I Weeks 5-6 Writing Classes!
9/29/14-10/10/14
During these past couple of weeks, we finished Object Based Programming Lab02 (OBP: using existing classes). Then we started Object Oriented Programming Lab03 (OOP: creating our own classes).
Many students new to programming had a hard time coming up with their own main classes to test their code. While writing their own classes, these students also had trouble deciding what to make a private instance field and making the distinction between accessors vs. mutators.
We need to practice what data to encapsulate and what behaviours to abstract in our classes. It's been a tough week for some, but it's a good learning experience that will pay off in the end!
YOUTUBE WEDNESDAYS:
If it's October, it's gotta be Admiral Grace Murray Hopper!
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 02
Quarter I Weeks 3-4 Using Objects!
9/15/14-9/26/14
OK, let me go back to my weekly or biweekly summaries. The day by day summary is too time consuming to write and I think too tedious to read! So, this will be a 2 week
summary as this past week was quite short
(Thursday and Friday was Rosh Hashanah).
We talked about constructing and using objects from existing classes in the Java Library such as java.awt.Rectangle, java.awt.Color, java.util.Random and java.lang.String. We mentioned constructors, accessors, mutators and immutable classes. I call this Object Based Programming (OBP). I reserve Object Oriented Programming (OOP) for when we write our own classes from scratch! I hope you are getting a lot out of our ScreenCasts with Java code attached to the YouTube descriptions.
We also talked about when to use lower-case, camelCase, ProperCase and UPPER_CASE following the Java Library conventions. Finally we reviewed our commandline: ls, cd, mkdir, rmdir, rm, top, last, who, whoami, chmod, javac, java, javadoc and appletviewer!
I think I'm changing my mind about doing my own projects or mini case studies this year. The new 20 hour triple lab component imposed by the College Board in APCS is worrying me. So, below you will find some canvas class projects with pixel graphics for your information but I'm skipping these for now. I'll revisit this decision later in the year if we find we have the time. Maybe we'll just play with pixel graphics as an after AP Exam Final Project?
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 01
Quarter I Week 2 println() Mania!
9/8/14-9/12/14
MONDAY: Hello World Version #2 Last week we left off on Hello1 which is your standard HelloWorld program using only println() for output. Today we played with Hello2 adding args[0] for commandline input. TUESDAY: Hello World Version #3+4 Hello3 adds JOptionPane for GUI input. As a result we had to ssh -Y userid@IP to allow a graphic ssh tunnel. Be carefull, ssh in class works the same as ssh at home on a Linux or Mac box. If you are using putty in Windows, you can't do any graphics. Hello4 was about doing the same thing with JApplet! WEDNESDAY: Lab 01 - C1X1+C1X2 We finally started Lab 01 which is everything you wanted to do with a println() in a main() method but were afraid to try! I modeled C1X1 (Chapter 1 Exercise 1) and the students tried to complete C1X2 in groups. C1X1 had us use "ASCII Graphics" to print out our names in a box. C1X2 was about printing out a face pattern. Of course, YouTube Wednesday would not be complete without Tom Lerher's "New Math" after which we discussed base 8 in great detail! THURSDAY: Lab 01 - C1X3+C1X4 C1X3 had use output an ASCII version of a TicTacToe Board. C1X4 was similar but we had to produce a staircase pattern. FRIDAY: Pop Goes the Quzzie! We refined the Quizzie and took it for real this time:
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
HelloWorld
Quarter I Week 1 First Week Back!
9/1/14-9/5/14
I don't usually do a day by day rundown of the week, but here goes nothing! MONDAY: Labor Day (nothing to report) TUESDAY: Superintendent's Conferences where we spent all day in meetings except for the last 2 hours of the day when we finally got to set up our rooms. I spent those 2 hours moving 100 textbooks, arranging and tweeking 25 PCs, finding 25 chairs and placing 6 tables. Then I found that my SSH server's RAID drive crashed, so I had to setup openSSH on an alternate server I used to have for FTP. That's OK since I don't need the FTP server much anymore. I use the SSH sever for my AP Computer Science students to login from home and finish their Java projects. I share files with my students through Edmodo. I upload my files on DropBox, SageCell and YouTube aka my cloud! WEDNESDAY: First Day of Classes The first day of every quarter starts with the "Ceremony Of The Seats" (new seating assignments). The students come into a dark room except for the PC monitors and the SmartBoard. On the SmartBoard I'm playing an MP3 of the sound track to "A Beautiful Mind" over VLC. Since this isn't an MP4, VLC adds some wild special effects on the SmartBoard so it's all cool. Then I walk to each seat and call each student using my SmartPhone as a flashlight as if I'm an usher in the Movie Theater. It's all very dramatic. Then we hand out books and book cards, go over the syllabus and fill out some biographical forms. Sorry, there's no instruction the first day of classes. YOUTUBE: Since it was Wednesday, after all, I had to show a FILK or two! So, at the end of the period I snuck in our own student made Frozen and then the infamous Mathmaticious! THURSDAY: Hello World Version #1 Of course, I had to start with Hello World! This version simply uses println for output. The next version will add args[0] commandline input! We are using a basic Linux Shell or Terminal with a text or ASCII Editor along with jdk 1.6's java and javac utilities. I'll introduce appletviewer next week and javadoc in chapter 3 when we write our own classes. FRIDAY: Pop Goes the Quzzie! I know it's only the 3rd day of class. However, I did throw a lot of acronyms and jargon at my students already, so here's the quiz. I hope you know all the answers. Let me just do these fill-ins for you: PARTC: MrG has been teaching 1010) PROGRAMMING since 1975 1011) NYS REGENTS MATH & SCI since 1984 1100) COLLEGE MATH & COMP since 1993 1101) LINUX CLUSTERS since 2002 1110) COMP ALG SYSTEMS since 2011 1111) IDK! since 2020
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
APCS NEW LAB DEBATE!
Quarter I Week 0 August Preparation
I started getting ready for the new AP Computer Science 20 hour lab requirement that's replacing the GridWorld Case Study using the 3 New Labs some time ago. If I recall correctly, all I had to do was goto the secure documents area of the APCommunity Teacher Audit site and download 3 zip files. Before downloading said files I had to click on some sort of acknowledgement pop up about using these labs or similar labs of my own design as part of the 20 hour requirement, that these files are indeed secure (ie: not to be posted publically) and that GridWorld is gone!
If that's all you think that you have to do for your students, I'd say that you're missing the point! The new requirement is to have at least 20 hours of lab time as part of your course. I don't think that's going to be a problem for most of us currently teaching APCS as I'm sure we probably provide more than 20 hours of lab time already. I know that I have lab time as part of every single class (that's why I teach in a PC Lab/Classroom). In 150 classes before AP Review and AP Exam Week, I probably have 100 hours of lab time! I can go many classes in a row without any formal lecture if we are in the throws of a particularly challenging problem set. I usually do a brief lecture at the beginning of a chapter. Then I give the students a pdf of the chapter to study at home privately via Edmodo or DropBox. Then I give my students a problem set for the chapter to hash out "together" (ie: in pairs but I help out at each PC or at the SmartBoard).
Now, if the 20 hours really means 20x60 minutes and not 20 periods, then the new requirement is more like 30 periods if your periods are 40 minutes long. So, if you did the New Labs all in a row, we're talking, for example, all of January and most of February.
When I heard of the demise of GridWorld, I was very happy as I could finally go back to using my own smaller "case studies" or projects that I never had time to do since the advent of College Board imposed Case Studies. I would only be able to do 1 or 2 of my own projects and varied them each year. I guess I'm a throw back to the time before AP Case Studies. Yes, there was such a time, and I enjoyed teaching that way.
Now the problem is to be able to cover the same material presented in the New Labs in those 20 hours. I was going to do my own thing or even just stick to GridWorld for a while. But now that I see the labs, I think my students may well enjoy this approach. I'll probably do a mix of a few of my own projects with the New Labs and the old problem sets from our textbook.
I've read the articles on http://www.skylit.com (Maria and Gary Litvin) as well as on http://www.bluepelicanjava.com (Charles Cook) regarding the use of the 3 Labs. Gary makes the case that the New Labs will take too much class time to cover thoroughly. Charles talks about reorganizing the labs into 17-23 hours of class time to cover them all. BluePelicanJava includes a lot of APCS B aka CS II, so I guess we can cut some of that! I was originally 100% with Gary, but now I think I'm somewhere between the two.
http://www.apluscompsci.com (Stacey Armstrong) even has a College Board approved syllabus with the New Labs integrated throughout the year. So, I guess she's on board too.
I haven't heard much from Cay Horstmann, or anyone else for that mater, on this subject.
You know, when we used to teach C++ in AP Computer Science, I used Gary Litvin's C++ for You++ as well as Owen Astrachan's Tapestry. Both of these C++ texts were masterpieces in my opinion!
Now, I use Gary's "MP3: Mathematics for the Digital Age and Programming in Python 3.0" in my intro CS class and Cay's Big Java in APCS A aka CS I. I wonder what Owen has to say about the New Labs. He's probably too busy developing the new AP CS Principles course to weigh in on this. BTW, these two texts are masterworks as well! Keep up the good work!
Am I going to be able to fit in every single exercise from all 3 Labs the first year? Probably not, but I think I'll try to fit as much in as I can. As with everything else, it comes down to experience. WRT to the 3 Labs we are all NOOBS again, so this year we can do justice to some of the Labs, next year a bit more, then eventually we'll get it down.
On a related note, if I had decided NOT to use the New Labs and substitute my own projects covering the same concepts, would I have had to resubmit my APCS Syllabus for audit? I was never clear on this point. I suppose it's moot now as I'm using the New Labs.
If you want ideas for your own projects, I like to use the StdDraw class from Princeton CS 126. I've also used How To Think Like A Computer Scientist in my intro course using Python. Some of the projects in there could easily be done with Java. Here's some nice lab ideas from the awesome Roger Frank! Given enough time (obviously can't do all this but I wish I could), here's what I'm thinking: CH1: Hello World (main, println, basic IO) CH2: Using Objects (from existing classes) CH3: Implementing Classes (our own constructors, accessors, mutators) CH4: Fundamental Data Types (Objects vs Primitives) CH6: Decisions (if statements, boolean expressions) CH7: Iteration (for loops, while loops, for each loops) **MAGPIE LAB** PROJECT: RockPaperScissorsLizardSpock (IF) PROJECT: ROT13 Encryption (Strings)
PROJECT: Lindenmayer Systems (Strings) PROJECT: Pythagorean Triples (Loops)
PROJECT: Function Graphing Calculator PROJECT: Parametric Graphing Calculator PROJECT: Polar Graphing Calculator CH8: Arrays and ArrayLists (1D and 2D static arrays, Lists) **PICTURE LAB** skip optionals PROJECT: Polygons and ShoeLace PROJECT: Iterated Fractal Systems PROJECT: Number Base Conversions PROJECT: Roman Numeral Arithmentic PROJECT: Chess960 and Random Numbers PROJECT: Complex and Mandelbrot CH11: Interfaces and Polymorphism CH13: Inheritance **ELEVENS LAB** skip optionals except sim CH18: Recursion CH19: Sorting and Searching PROJECT: Turtle Class PROJECT: Turtle Class+Lindenmayer PROJECT: Turtle Class+Koch SnowFlakes PROJECT: Turtle Class+Ball/Ballistics PROJECT: Turtle Class+nBody/Orbits PROJECT: Our own Static Math Class AP REVIEW AP EXAMS POST AP EXAMS: Linux Clusters, MPI4PY Python, VPython, Cython SAGE, POVRAY, BLENDER, TACHYON Python Samples to convert to Java projects:
Java Samples:
VPython Sample:
SAGE Samples: (4 video playlist)
Clusters and Scientific Computing Samples: (6 video playlist)
Yeah, Quarter I is done! We finally finished LAB03 writing our own constructors, accessors, mutators and javadoc. We also did all we could with BIN, OCT, DEC and HEX as well as Truth Tables and Circuit Diagrams! Now we start LAB04 using int, short, byte, long, float and double. We also talked about java.lang.Math!
We also discovered a YouTube kindred spirit in CS50 at Harvard. They are doing a lot of the same material we are doing except they use a virtual machine install of Fedora Linux on their MAC or WIN laptops and they start out programming in Scratch and C! We use a native installation of Ubuntu Linux on our PC Desktops and Oracle's JDK.
CS50 LECTURES:
CS50 SECTIONS:
CS50 PROBLEM SET WALKTHROUGHS:
YOUTUBE WEDNESDAYS:
Since we're doing Conic Sections and Planet Orbits in preCalculus, it's time for our Astronomy related YouTubes! We started by talking about really big and really small numbers and metric prefixes.
Week9: NEW Powers of Ten.
Week10: Original Powers of Ten.
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 03
Quarter I Weeks 7-8 Name That Number!
10/13/14-10/24/14
We finished Object Oriented Programming Lab03 (OOP: creating our own classes). Then we started a unit on arithmetic in bases other than 10! I call this unit "Name That Number" especially at the begining of the unit when all we do is convert to and from base 10. The students were particularly baffled when a terminating rational number in one base converted to a repeating rational number, or even an irrational number, in another base!
YOUTUBE WEDNESDAYS:
If it's October, it's gotta be Admiral Grace Murray Hopper!
Week8: Walter Isaacson on CBS Sunday Morning (from my DVDR).
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 03
Quarter I Weeks 5-6 Writing Classes!
9/29/14-10/10/14
During these past couple of weeks, we finished Object Based Programming Lab02 (OBP: using existing classes). Then we started Object Oriented Programming Lab03 (OOP: creating our own classes).
Many students new to programming had a hard time coming up with their own main classes to test their code. While writing their own classes, these students also had trouble deciding what to make a private instance field and making the distinction between accessors vs. mutators.
We need to practice what data to encapsulate and what behaviours to abstract in our classes. It's been a tough week for some, but it's a good learning experience that will pay off in the end!
YOUTUBE WEDNESDAYS:
If it's October, it's gotta be Admiral Grace Murray Hopper!
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 02
Quarter I Weeks 3-4 Using Objects!
9/15/14-9/26/14
OK, let me go back to my weekly or biweekly summaries. The day by day summary is too time consuming to write and I think too tedious to read! So, this will be a 2 week
summary as this past week was quite short
(Thursday and Friday was Rosh Hashanah).
We talked about constructing and using objects from existing classes in the Java Library such as java.awt.Rectangle, java.awt.Color, java.util.Random and java.lang.String. We mentioned constructors, accessors, mutators and immutable classes. I call this Object Based Programming (OBP). I reserve Object Oriented Programming (OOP) for when we write our own classes from scratch! I hope you are getting a lot out of our ScreenCasts with Java code attached to the YouTube descriptions.
We also talked about when to use lower-case, camelCase, ProperCase and UPPER_CASE following the Java Library conventions. Finally we reviewed our commandline: ls, cd, mkdir, rmdir, rm, top, last, who, whoami, chmod, javac, java, javadoc and appletviewer!
I think I'm changing my mind about doing my own projects or mini case studies this year. The new 20 hour triple lab component imposed by the College Board in APCS is worrying me. So, below you will find some canvas class projects with pixel graphics for your information but I'm skipping these for now. I'll revisit this decision later in the year if we find we have the time. Maybe we'll just play with pixel graphics as an after AP Exam Final Project?
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
Lab 01
Quarter I Week 2 println() Mania!
9/8/14-9/12/14
MONDAY: Hello World Version #2 Last week we left off on Hello1 which is your standard HelloWorld program using only println() for output. Today we played with Hello2 adding args[0] for commandline input. TUESDAY: Hello World Version #3+4 Hello3 adds JOptionPane for GUI input. As a result we had to ssh -Y userid@IP to allow a graphic ssh tunnel. Be carefull, ssh in class works the same as ssh at home on a Linux or Mac box. If you are using putty in Windows, you can't do any graphics. Hello4 was about doing the same thing with JApplet! WEDNESDAY: Lab 01 - C1X1+C1X2 We finally started Lab 01 which is everything you wanted to do with a println() in a main() method but were afraid to try! I modeled C1X1 (Chapter 1 Exercise 1) and the students tried to complete C1X2 in groups. C1X1 had us use "ASCII Graphics" to print out our names in a box. C1X2 was about printing out a face pattern. Of course, YouTube Wednesday would not be complete without Tom Lerher's "New Math" after which we discussed base 8 in great detail! THURSDAY: Lab 01 - C1X3+C1X4 C1X3 had use output an ASCII version of a TicTacToe Board. C1X4 was similar but we had to produce a staircase pattern. FRIDAY: Pop Goes the Quzzie! We refined the Quizzie and took it for real this time:
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
HelloWorld
Quarter I Week 1 First Week Back!
9/1/14-9/5/14
I don't usually do a day by day rundown of the week, but here goes nothing! MONDAY: Labor Day (nothing to report) TUESDAY: Superintendent's Conferences where we spent all day in meetings except for the last 2 hours of the day when we finally got to set up our rooms. I spent those 2 hours moving 100 textbooks, arranging and tweeking 25 PCs, finding 25 chairs and placing 6 tables. Then I found that my SSH server's RAID drive crashed, so I had to setup openSSH on an alternate server I used to have for FTP. That's OK since I don't need the FTP server much anymore. I use the SSH sever for my AP Computer Science students to login from home and finish their Java projects. I share files with my students through Edmodo. I upload my files on DropBox, SageCell and YouTube aka my cloud! WEDNESDAY: First Day of Classes The first day of every quarter starts with the "Ceremony Of The Seats" (new seating assignments). The students come into a dark room except for the PC monitors and the SmartBoard. On the SmartBoard I'm playing an MP3 of the sound track to "A Beautiful Mind" over VLC. Since this isn't an MP4, VLC adds some wild special effects on the SmartBoard so it's all cool. Then I walk to each seat and call each student using my SmartPhone as a flashlight as if I'm an usher in the Movie Theater. It's all very dramatic. Then we hand out books and book cards, go over the syllabus and fill out some biographical forms. Sorry, there's no instruction the first day of classes. YOUTUBE: Since it was Wednesday, after all, I had to show a FILK or two! So, at the end of the period I snuck in our own student made Frozen and then the infamous Mathmaticious! THURSDAY: Hello World Version #1 Of course, I had to start with Hello World! This version simply uses println for output. The next version will add args[0] commandline input! We are using a basic Linux Shell or Terminal with a text or ASCII Editor along with jdk 1.6's java and javac utilities. I'll introduce appletviewer next week and javadoc in chapter 3 when we write our own classes. FRIDAY: Pop Goes the Quzzie! I know it's only the 3rd day of class. However, I did throw a lot of acronyms and jargon at my students already, so here's the quiz. I hope you know all the answers. Let me just do these fill-ins for you: PARTC: MrG has been teaching 1010) PROGRAMMING since 1975 1011) NYS REGENTS MATH & SCI since 1984 1100) COLLEGE MATH & COMP since 1993 1101) LINUX CLUSTERS since 2002 1110) COMP ALG SYSTEMS since 2011 1111) IDK! since 2020
APCS: AP CompSci + JAVA SCREENCASTS: YouTube descriptions include links to code and notes if you need them.
Teaching AP CompSci:
APCS NEW LAB DEBATE!
Quarter I Week 0 August Preparation
I started getting ready for the new AP Computer Science 20 hour lab requirement that's replacing the GridWorld Case Study using the 3 New Labs some time ago. If I recall correctly, all I had to do was goto the secure documents area of the APCommunity Teacher Audit site and download 3 zip files. Before downloading said files I had to click on some sort of acknowledgement pop up about using these labs or similar labs of my own design as part of the 20 hour requirement, that these files are indeed secure (ie: not to be posted publically) and that GridWorld is gone!
If that's all you think that you have to do for your students, I'd say that you're missing the point! The new requirement is to have at least 20 hours of lab time as part of your course. I don't think that's going to be a problem for most of us currently teaching APCS as I'm sure we probably provide more than 20 hours of lab time already. I know that I have lab time as part of every single class (that's why I teach in a PC Lab/Classroom). In 150 classes before AP Review and AP Exam Week, I probably have 100 hours of lab time! I can go many classes in a row without any formal lecture if we are in the throws of a particularly challenging problem set. I usually do a brief lecture at the beginning of a chapter. Then I give the students a pdf of the chapter to study at home privately via Edmodo or DropBox. Then I give my students a problem set for the chapter to hash out "together" (ie: in pairs but I help out at each PC or at the SmartBoard).
Now, if the 20 hours really means 20x60 minutes and not 20 periods, then the new requirement is more like 30 periods if your periods are 40 minutes long. So, if you did the New Labs all in a row, we're talking, for example, all of January and most of February.
When I heard of the demise of GridWorld, I was very happy as I could finally go back to using my own smaller "case studies" or projects that I never had time to do since the advent of College Board imposed Case Studies. I would only be able to do 1 or 2 of my own projects and varied them each year. I guess I'm a throw back to the time before AP Case Studies. Yes, there was such a time, and I enjoyed teaching that way.
Now the problem is to be able to cover the same material presented in the New Labs in those 20 hours. I was going to do my own thing or even just stick to GridWorld for a while. But now that I see the labs, I think my students may well enjoy this approach. I'll probably do a mix of a few of my own projects with the New Labs and the old problem sets from our textbook.
I've read the articles on http://www.skylit.com (Maria and Gary Litvin) as well as on http://www.bluepelicanjava.com (Charles Cook) regarding the use of the 3 Labs. Gary makes the case that the New Labs will take too much class time to cover thoroughly. Charles talks about reorganizing the labs into 17-23 hours of class time to cover them all. BluePelicanJava includes a lot of APCS B aka CS II, so I guess we can cut some of that! I was originally 100% with Gary, but now I think I'm somewhere between the two.
http://www.apluscompsci.com (Stacey Armstrong) even has a College Board approved syllabus with the New Labs integrated throughout the year. So, I guess she's on board too.
I haven't heard much from Cay Horstmann, or anyone else for that mater, on this subject.
You know, when we used to teach C++ in AP Computer Science, I used Gary Litvin's C++ for You++ as well as Owen Astrachan's Tapestry. Both of these C++ texts were masterpieces in my opinion!
Now, I use Gary's "MP3: Mathematics for the Digital Age and Programming in Python 3.0" in my intro CS class and Cay's Big Java in APCS A aka CS I. I wonder what Owen has to say about the New Labs. He's probably too busy developing the new AP CS Principles course to weigh in on this. BTW, these two texts are masterworks as well! Keep up the good work!
Am I going to be able to fit in every single exercise from all 3 Labs the first year? Probably not, but I think I'll try to fit as much in as I can. As with everything else, it comes down to experience. WRT to the 3 Labs we are all NOOBS again, so this year we can do justice to some of the Labs, next year a bit more, then eventually we'll get it down.
On a related note, if I had decided NOT to use the New Labs and substitute my own projects covering the same concepts, would I have had to resubmit my APCS Syllabus for audit? I was never clear on this point. I suppose it's moot now as I'm using the New Labs.
If you want ideas for your own projects, I like to use the StdDraw class from Princeton CS 126. I've also used How To Think Like A Computer Scientist in my intro course using Python. Some of the projects in there could easily be done with Java. Here's some nice lab ideas from the awesome Roger Frank! Given enough time (obviously can't do all this but I wish I could), here's what I'm thinking: CH1: Hello World (main, println, basic IO) CH2: Using Objects (from existing classes) CH3: Implementing Classes (our own constructors, accessors, mutators) CH4: Fundamental Data Types (Objects vs Primitives) CH6: Decisions (if statements, boolean expressions) CH7: Iteration (for loops, while loops, for each loops) **MAGPIE LAB** PROJECT: RockPaperScissorsLizardSpock (IF) PROJECT: ROT13 Encryption (Strings)
PROJECT: Lindenmayer Systems (Strings) PROJECT: Pythagorean Triples (Loops)
PROJECT: Function Graphing Calculator PROJECT: Parametric Graphing Calculator PROJECT: Polar Graphing Calculator CH8: Arrays and ArrayLists (1D and 2D static arrays, Lists) **PICTURE LAB** skip optionals PROJECT: Polygons and ShoeLace PROJECT: Iterated Fractal Systems PROJECT: Number Base Conversions PROJECT: Roman Numeral Arithmentic PROJECT: Chess960 and Random Numbers PROJECT: Complex and Mandelbrot CH11: Interfaces and Polymorphism CH13: Inheritance **ELEVENS LAB** skip optionals except sim CH18: Recursion CH19: Sorting and Searching PROJECT: Turtle Class PROJECT: Turtle Class+Lindenmayer PROJECT: Turtle Class+Koch SnowFlakes PROJECT: Turtle Class+Ball/Ballistics PROJECT: Turtle Class+nBody/Orbits PROJECT: Our own Static Math Class AP REVIEW AP EXAMS POST AP EXAMS: Linux Clusters, MPI4PY Python, VPython, Cython SAGE, POVRAY, BLENDER, TACHYON Python Samples to convert to Java projects:
Java Samples:
VPython Sample:
SAGE Samples: (4 video playlist)
Clusters and Scientific Computing Samples: (6 video playlist)