Showing posts with label computer science. Show all posts
Showing posts with label computer science. Show all posts

Friday, September 26, 2014

Teaching AP CompSci: Lab 02 Quarter I Weeks 3-4 Using Objects! 9/15/14-9/26/14


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? 

YOUTUBE WEDNESDAYS: 
If it's September, it's gotta be Tom Lehrer!
Week3: Elements ala SheldonPotter not to mention Gilbert and Sullivan?
Week4: Lobachevsky channeling Danny Kaye!



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
MONDAYHello 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.

TUESDAYHello 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!

WEDNESDAYLab 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!

THURSDAYLab 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.

FRIDAYPop 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!

THURSDAYHello 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.

FRIDAYPop 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)

Well, that's all folks!

Saturday, December 15, 2012

Quarter II, Week 6: ScreenCasts, SmartNotes and Code oh my!





Quarter II, Week 6: ScreenCasts, SmartNotes and Code oh my! 

Math 4R: preCalculus for Seniors
Math 4H: preCalculus Honors for Juniors
Math 5H: AP Calculus BC
CSH: Computer Science Honors
APCS: AP Computer Science
CIS(theta): Computing Independent Study
PAEMST: Presidential Award of Excellence
Ubuntu: Linux Install Fun and Games

Above you will find links to summaries of all my lessons for the past several weeks. So, this blog post serves as a Table of Contents for all my other blogs from class!

In addition, CIS(theta) is a summary of my Computing Independent Study class that meets after school like a club. 

PAEMST details my trials and tribulations regarding my 2012-2013 application for the Presidential Award of Excellence in Math and Science Teaching. 

Last, but not least, UBUNTU is a collection of blogs about installing, maintaining and teaching with Ubuntu Linux on my desktop and on my students' desktops in class!

Our YouTube Wednesday this week was a cover of Ton Lehrer's "Chistmas Carol." 



Well, that's all folks!
Learning with Technology, 

Sunday, September 16, 2012

Teaching CSH: Chapter 1 is nearly done!



We almost finished Chapter 1 this week. We worked on section 102 Pythonic Functions, 103 Defining Functions, 104 Algorithms and 105 Coding in Python. Below, you will find all our ScreenCasts and Python Code!







Code for Chapter 1 Section 2.
Code for Chapter 1 Section 3.
Code for Chapter 1 Section 4.
Code for Chapter 1 Section 5.

Well, that's all folks!

Friday, September 7, 2012

Quarter I, Week 1: ScreenCasts, SmartNotes and Code, oh my!


Here we go again: once more into the breach! We're back in full swing at good old BSHS. It's as if we never left! I have 6 preps this year if you count Computing Independent Study after school which starts next week. 

You will note, in the links for each class below, that I assign the viewing of ScreenCasts as part of the homework. These videos are viewed AFTER a new topic is introduced in class. I guess you'd call it a "mini flip?" Most of the ScreenCasts are 30-40 minute long recordings from prior years in a lecture format. Now-a-days my classes are more "hands on." For example, the Computing courses have plenty of group work and labs. Also, nearly every day, my math classes are "WhiteBoarding!" 

Another new trend for this year is a transition to SAGE. SAGE is an online Computer Algebra System based on FLOSS software. SAGE is much like Mathematica and it's FREE! I've been using SAGE to teach Discrete Mathematics with Python in Computer Math (now Computer Science Honors) for years now. I'm going to try to ween my preCalculus classes off the Graphing Calculator and on to SAGE this year for the first time. So, you will start seeing ScreenCasts, SmartNotes AND Code in the preCalculus blogs. I cannot use SAGE in my AP Computer Science class as they are learning Java. Neither can I use it in AP Calculus BC as they need to use a TI89 on the AP exam. So, the AP Calculus BC blogs with only include ScreenCasts and SmartNotes. Further, the AP Computer Science blogs will only have ScreenCasts and Code.

This week's YouTube Wednesday (see above) was Tom Lehrer's "New Math." This is a great video as I'm teaching about Octal file permissions in Linux this week in my Computing classes. It's great in math class to talk about change of number base algorithms too!

My 6 preps for 2012-2013 are: 

(1) Math 4R is preCalculus for Seniors (Regents track but without a Regents exam). 

(2) Math 4H Honors is preCalculus for Juniors and leads to AP Calculus BC next year. 

(3) Math 5HBC is AP Calculus BC. 

(4) CSH is a new full year Honors class leading to AP Computer Science next year. CSH is replacing CM/ACM: Computer Math/Advanced Computer Math. 

(5) APCS is AP Computer Science. 

(6) CIS(theta) is Computing Independent Study for any Senior who has taken AP Computer Science already and wants to learn about Linux Clusters!

They each get their own blog post:

Math 4R: preCalculus for Seniors

Math 4H: preCalculus Honors for Juniors

Math 5HBC: AP Calculus BC

CSH: Computer Science Honors

APCS: AP Computer Science


Here's a little background music from David Arnold:




Don't forget to have a Star Trek: TOS 46th Anniversary BBQ!

I hope you enjoyed this week's update!

 
Learning with Technology, 
http://www.youtube.com/calcpage2009
http://www.slideshare.net/calcpage2011
http://mathforum.org/kb/profile.jspa?userID=32552
https://sage.math.clemson.edu:34567/pub/?typ=pub&search=calcpage









Teaching CSH: Chapter 1 Sets and Functions!


We started Chapter 1 this week which is mostly about sets, functions, domains and ranges! We set up our SAGE accounts and even made a few ScreenCasts!







Code for Chapter 1 Section 2.

Well, that's all folks!

Monday, June 25, 2012

Teaching APCS: Away with GridWorld say I!

What follows is a reply I made to a post on the AP CompSci ListServ regarding changing the GridWorld Case Study on the AP Exam:


Thanx for expressing the frustrations that many of us have had teaching large case studies in AP Computer Science over the years. These case studies have gotten more and more elaborate starting with Directory Manager in Pascal to Large Integers in C++ and Marine Biology in C++ and then in Java. BTW, both the Marine Biology and GridWorld case studies seem to me a lot like Conway's Game of Life gone amok. 


However, as a Math teacher, I must admit to being a bit partial to the Large Integer Case Study. One really nice feature of this case study was the use of operator overloading which we lost when we switched to Java. We really should do more with Scientific Computing or Computing Science applications in Math and Science. Maybe, we should even introduce multi-processor aka grid aka cluster computing!


I'm sure I'm not the only one that feels a lot of time presure in their AP course. I have a big problem teaching all the content in APCS plus a large case study with time to spare for review for the May exam to students who take this course as a first experience in Computer Science! In fact, I'm quite concerned that the new mini modules won't be all that mini! 


On a related note: some schools start the year in August but mine, as many others, starts in September. I thought something was being done about this such as early and late exam dates for AP exams in May?




Well, that's all folks!