Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Tuesday, September 1, 2020

My CompSci Last Will & Testament!

My CompSci Last Will & Testament!




Dear New CompSci Teacher & Successor:

As a newly retired AP Computer Science teacher, I salute you on your choice of career! 


Believe it or not, I was in your shoes 36 years ago when I started teaching High School Math in 1984, AP Computer Science A&AB in 1988 and AP Calculus AB&BC as well as College Math in 1993. I've been teaching Intro CompSci most years since 1984 and AP CSA (AP CSAB during the C++ years) every year from 1987-1988 to 2017-2018 school years. The main difference between my starting out then and your starting out now is that you have a lot more tools available to you with respect to hardware, software and even curriculae. For example, you have your choice of online textbook and IDE. Many such textbooks are interactive with built in IDEs. You even have your choice of online IDE via cloud computing on Google Compute Platform (GCP) or on Amazon Web Services (AWS). Good for you! 




When I started out we had two classrooms of 8 IBM PCs shared by 16 students in each room running the Intel 8088 processor, text based monochrome graphics screens, 256KB RAM and two 5.25" floppy disk drives (one disk to boot IBM DOS and another disk to run applications like IBM BASIC, WordStar WordProcessor, Lotus 123 Spreadsheet or dBASE as well as saving data files). Forget harddrives, multicolor graphics arrays, printers or networks. In fact, we had only just replaced a GIMIX MiniComputer (UNIX based) network with these PCs. That was part of my job when I was hired! I've been maintaining, upgrading and redesigning these classroom/PC Labs ever since! In 1987 we started a Computer Math class (aka introCS) that was so popular we had to turn people away! We ran 2 sections every period of the day for 8 periods for about 250 students each year for several years. Now we are lucky if we get one section of introCS and one section of AP CSA. About 20 years ago, we combined the 2 labs into one as you can see pictured in the masthead of this blog.




Fast forward to the present day and you will find me and my students computing in the cloud whether it be scientific computing using SAGE (Google Compute Platform) in math class or graphics programming using OpenProcessing (Amazon Web Services). We're even building Linux Clusters out of Raspberry PIs (RPIs) after school creating fractal and povray prints with my Computing Science Independent Study (CSI) students! It's like I traveled 36 years into the future on H. G. Wells' own time machine to see how the state of computer science education has changed over all these years!




So, what pearls of wisdom can I bequeath unto my stalwart successor? I'll not bore you with my entire history of teaching CompSci and all the hardware, software and curriculum changes over the years. Let me just share with you what I would have done this year if the COVID19 Pandemic hadn't made me retire. I was still preparing for the new school year (2020-2021) last month just like I do every year before I decided to retire. So I think I have a pretty good idea of what you should do to get started teaching introCS and AP CSA in this day and age.



Last year, my Intro Computer Science course, Computer Science Honors (CSH), was completely online as far as computing environments were concerned. We used SAGE a lot for pythonic scripting. We also used Trinket.io whenever we needed turtle.py or visual.py access (aka IDLE and VIDLE). Our textbook was a combination of "Coding in Python and Elements of Discrete Mathematics" by the incomparable Maria & Gary Litvin from SkyLight Publishing and the amazing interactive python text online: "How to Think Like a Computer Scientist."



Two years ago, in AP CSA, we used CS50 and OpenProcessing a lot and we loved it! It's great to have the same computing environment in class and at home down to the filing system and the files we are working on. CS50 emulates an Ubuntu Linux Desktop which we used to write and debug all our text based java programs. We used OpenProcessing whenever we wanted to do something graphical in java (optional: not tested on the AP Exam). See The Nature Of Code YouTube Channel by Daniel Schiffman for some great ideas! If you want to get fancy, CS50 recently launched a Sandbox version adding support of Xwindows graphical programming as well as Jupyter Notebooks (aka Interactive Python NoteBooks). Our textbook was "Big Java" by the phenomenal Cay Horstmann. This year I would also follow the new AP CSA CED and AP Classroom. Runestone has a great interactive online text "CSAwesome" that I highly recommend!



In many states, this year you will need to have all these sites sign a waiver to protect student data (PII). BTW, we can use SAGE without a waiver because you don't have to login to use it. You would think it's a problem that you can't print or save your work. However, you can easily download your python scripts for printing. You can even share a permalink url with all your interactive code embedded and encrypted! See samples from my math classes on the sidebar of this blog. There's also a commercial version of SAGE called CoCalc if you want to save your code online and print to pdf. CoCalc even has a LaTex editor as well as Jupyter Notebooks! Trinket already signed the PII waiver for my former school district, thank you! 



My old High School is still waiting for CS50 and OpenProcessing to come on board. You need a GitHub account to log into CS50 so we sent a waiver there too. Harvard's own Dr. David Malan said he's working on the CS50 waiver. Openprocessing said they may make a sandbox edition where you won't even need to login! If we don't get those waivers signed, students may have to download and install the NetBeans and Processing IDEs on their PCs at home (we have these installed on the school PCs just in case).



If your students are stuck at home learning remotely, best thing to do would be to install IDEs on a PC desktop. I was loooking at NetBeans or Eclipse for java. Processing has a desktop IDE as well. If students are using chromebooks, I was looking at an experimental Linux desktop that's now included as a dual boot OS on most chromebooks. BTW, both the chromebook and CS50 platforms use a text (ASCII) based Linux console running Ubuntu Linux (which I used for decades at my old High School).



FYI, I'm in the process of posting my screencasts to Patreon. Please keep an eye out for my Computer Science posts: 






BTW, we've been using Linux so long (1995-2017 IIRC) that I remember using telnet, rlogin and plain ftp back in the day before setting up ssh and sftp servers! We even had a separate ftp server just to share files with students and faculty. OMG, I even remember using UNIX in the 1970s and 1980s back in my undergraduate days at Cornell majoring in Physics and Electrical Engineering!


One last thing, don't forget about Rubber Duck Debugging! Here's some more info!

Well, that's all folks.

Generally Speaking,
A. Jorge Garcia

 
Applied Math, Physics and CS
www.patreon.com/calcpage2020

www.youtube.com/calcpage2009

calcpage.redbubble.com

society6.com/calcpage






2015 NYS Secondary Math PAEMST Nominee


Teaching with Technology, 
pastebin youtube slideshare 
mathforum apcommunity sage

(IDEs & Code)
MATH 4H, AP CALC, CSH: SAGECELL
(Curriculae)
CSH: CodeHS
APCSA: Big Java
APCSA: CSAwesome

RECOMMENDED AP COMPSCI REVIEW:
CRIB SHEET (given during exam)
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (past FRQs)
REVIEW EDX REVIEW MOOC01 
REVIEW UDEMY REVIEW MOOC02 
REVIEW CODING_BAT 
REVIEW PRACTICE_IT 
REVIEW RUNESTONE 
AUDIT CS50

RECOMMENDED AP CALCULUS REVIEW:
CRIB SHEET (not given during exam) 
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (latest AB FRQs)
REVIEW APCENTRAL (latest BC FRQs)
REVIEW APCENTRAL (older AB FRQs)
REVIEW APCENTRAL (older BC FRQs)
REVIEW EDX MOOC01 
REVIEW COURSERA MOOC02

XTRA CREDIT FILKS RUBRIC 
(1 video = up to 5 bonus points):
1) Use a recognizable tune.
2) Karaoke entire song changing up the words (about STEAM).
3) You are Singing, Dancing or Playing an instrument.
4) You upload your video to YouTube and provide the url.
5) YouTube Description includes the lyrics.

XTRA CREDIT ARTICLES RUBRIC
(up to 5 articles = 1 bonus point each):
1) Cover Sheet is a Summary of the article.
2) FullPage, 12 pt, DoubleSpaced, 1" Margin.
3) Article has to be STEAM related
4) Article has to be a current event.
5) Copy of entire article is attached.

Friday, May 1, 2020

Computing Science Education 2020 (Part 3 of 3)

Computing Science Education 2020 
(Part 3 of 3)



In conclusion, we are finally seeing the promise of cloud based computing come to fruision! Nowadays, all you need is a Chrombook with Google Drive, Google Docs, maybe a few Android apps and a plethora of computing environments at your disposal just a click away all from your browser!



I use SAGE all the time in all my math classes from preCalculus in High School to Multivariable Calculus in College! SAGE is a great Computer Algebra System (CAS) running on the Google Compute Platform (GCP) available to you for free of charge anytime you need it from any browser you want as long as you have internet access! It wasn't too long ago that this kind of computing power came at a heafty price for software not to mention the hardware, maybe even a super computer, to back it up! We have used Mathematica and MATLAB at the high school in the past, but these solutions are expensive! Why not get the best of both worlds with SAGE?



My Intro Computer Science course, Computer Science Honors, was completely online this year as far as computing environments are concerned. We used SAGE a lot for pythonic scripting. We also used Trinket.io whenever we needed turtle.py or visual.py access (aka IDLE and VIDLE).



In AP Computer Science A we used CS50 and OpenProcessing extensively last year! CS50 emulates an Ubuntu Linux Desktop which we used to write and debug all our text based java programs. We used OpenProcessing whenever we wanted to do something graphical in java. CS50 recently launch as Sandbox version adding support of Xwindowed graphical programming as well as Jupyter Notebooks (aka Interactive Python NoteBooks). Next year we need to have all the sites we use sign a waiver to protect student data. SAGE is fine as you don't have to login to use it. You would think it's a problem that you can't print or save your work. However, you can easily download your python scripts for printing. You can even share a permalink url with all your interactive code embedded and encrypted! There's a commercial version of SAGE called CoCalc if you want to save your code online and print to pdf. CoCalc even has a LaTex editor as well as Jupyter Notebooks! Trinket already signed the waiver, thank you! We are still waiting for CS50 and OpenProcessing to come on board. You need a GitHub account to log into CS50 so we sent a waiver there too. Harvard's own Dr. David Malan said he's working on the CS50 waiver. Openprocessing said they make a Sandbox edition where you don't need to login. If we don't get those waivers signed, students may have to download and install the NetBeans and Processing IDEs on their PCs at home (we have these intalled on the school PCs just in case).



It's amazing how far we've come in my 36 years of teaching so far! We were even going build a Linux Cluster out of Raspberry PIs this year when the pandemic hit. We were just starting to render mandelbrot fractal plots in March. One RPI has 4 cores so you can scale up from 1 to 2 to 4 cores to see work up efficiaency ratios improve. We did some 8000x6000 pixel plots with 32 bit color depth in a reasonable amount of time. We were about to scale up the hardware so we could run 8 to 16 to 64 cores when the pandemic shutdown slowed us way down. We would also require a USB power hubs and Ethernet routers with several USB and Ethernet cables to complete the project.



We would also have to enable public key authentcated SSH after installing openSSH as well as openMPI. That reminds me, we used to SSH into school from home and SSH home from school when we setup our own Linux SSH/SFTP servers in school and at home. I still run Linux server at home. We would SSH in from home to finish AP CSA classwork and play around with the cluster. Back then, the cluster was a whole PC Lab/Classroom with 25 PCs each running AMD Athlon Quadcores. One year we had 3 rooms with 75 PCs! So we were running 100-300 cores on Big Iron, not RPIs, getting well over 50-150 GFLOP/s. I ran a Linux shop for 24 years at my high school. Then a new administration came in and said we had to switch to WimpDoze only labs. Figures this happened just when we upgraded to hexacore PCs where I estimated we'd get up to 300 GFLOP/s performance but we never got the chance to try these hexacores out. That's why we are now trying to do the Linux Cluster project on RPIs instead and SSHing to and from home is, of course, blocked. BTW, we'd SSH home to backup files or to check email on our home servers when the school used to block email (but not ssh?)!



We've been using Linux so long that I remember using telnet, rlogin and plain ftp back in the day before setting up ssh and sftp servers! We even had a separate ftp server just to share files with students and faculty. Gosh, I even remember using UNIX in the 1970s and 1980s back in my undergraduate days at Cornell!


Well, that's all folks.

Generally Speaking,
A. Jorge Garcia

 
Applied Math, Physics and CS
www.patreon.com/calcpage2020

www.youtube.com/calcpage2009

calcpage.redbubble.com

society6.com/calcpage






2015 NYS Secondary Math PAEMST Nominee


Teaching with Technology, 
pastebin youtube slideshare 
mathforum apcommunity sage

(IDEs & Code)
MATH 4H, AP CALC, CSH: SAGECELL
(Curriculae)
CSH: CodeHS
APCSA: Big Java
APCSA: CSAwesome

RECOMMENDED AP COMPSCI REVIEW:
CRIB SHEET (given during exam)
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (past FRQs)
REVIEW EDX REVIEW MOOC01 
REVIEW UDEMY REVIEW MOOC02 
REVIEW CODING_BAT 
REVIEW PRACTICE_IT 
REVIEW RUNESTONE 
AUDIT CS50

RECOMMENDED AP CALCULUS REVIEW:
CRIB SHEET (not given during exam) 
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (latest AB FRQs)
REVIEW APCENTRAL (latest BC FRQs)
REVIEW APCENTRAL (older AB FRQs)
REVIEW APCENTRAL (older BC FRQs)
REVIEW EDX MOOC01 
REVIEW COURSERA MOOC02

XTRA CREDIT FILKS RUBRIC 
(1 video = up to 5 bonus points):
1) Use a recognizable tune.
2) Karaoke entire song changing up the words (about STEAM).
3) You are Singing, Dancing or Playing an instrument.
4) You upload your video to YouTube and provide the url.
5) YouTube Description includes the lyrics.

XTRA CREDIT ARTICLES RUBRIC
(up to 5 articles = 1 bonus point each):
1) Cover Sheet is a Summary of the article.
2) FullPage, 12 pt, DoubleSpaced, 1" Margin.
3) Article has to be STEAM related
4) Article has to be a current event.
5) Copy of entire article is attached.

Wednesday, April 1, 2020

Computing Science Education 2020 (Part 2 of 3)

Computing Science Education 2020 
(Part 2 of 3)



Many high schools don't have the enrollment to populate a CS0 and CS1 course. I ran a course called Computer Math for decades using different versions of BASIC, of all languages, as our CS0 course prereq to AP CSA aka our CS1 course at my high school (1984-2010). Then we switched to Python. We call the intro class Computer Science Honors (CSH) now.



This approach worked well until about 5 years ago when guidance stopped populating our CS0 class and put everyone into the CS1 class. I managed to bring back CS0 this year but competition with AP CSP killed it again for next year. Sorry to say, CSP is not the CS0 our kids are looking for in preparation to take CSA, so CSP and CSH are perforce at loggerheads. 

CSP is not enough about syntax, semantics or algorithms to be a good CS0 at the high school level. Look at Harvard's CS50! This college level CS0 course for non-majors uses a ton of different languages. Said approach would be better suited as a CS0 before CSA. BTW, I tend to cover some CSP content in CSH/CSA anyway (2 year sequence before the AP exam). But not enough to replace my CSH with CSP. I'm afraid that I cannot ascribe to the CSP design philosophy.

BTW, I've been teaching AP CSA since the 1987-1988 school year and have gone through all the syllabus changes and language changes (Pascal to C++ to Java). As much as I'd love a switch of languages to something like Python, I don't really see the need for it yet. Here's the curriculum I've been working on all these decades:

CSH - Intro class with Python
CSA - AP class with Java
CSI - Independent study class with openMPI
CSL - Calculus class using CAS (SAGE)

Finally, CS is a very broad subject. It's not just about IT and industry nor is it just about software and app development. I come from a background of Computing Science or Scientific Computing concerned mostly with using Math, Science and computing environments of various types on various platforms to run simulations as an aid to research and solve real world problems. 

For example, please see recent lessons for my CS0 class (above) that I screencast from home since our high school campus has been closed for several weeks now due the COVID19 outbreak, but the show... err, elearning online must go on! Here's the SAGE code, which is mostly pythonic, that goes with the first screencast shown above. Here's SAGE code for the second screencast.

Well, that's all folks.

Generally Speaking,
A. Jorge Garcia

 
Applied Math, Physics and CS
www.patreon.com/calcpage2020

www.youtube.com/calcpage2009

calcpage.redbubble.com

society6.com/calcpage






2015 NYS Secondary Math PAEMST Nominee


Teaching with Technology, 
pastebin youtube slideshare 
mathforum apcommunity sage

(IDEs & Code)
MATH 4H, AP CALC, CSH: SAGECELL
(Curriculae)
CSH: CodeHS
APCSA: Big Java
APCSA: CSAwesome

RECOMMENDED AP COMPSCI REVIEW:
CRIB SHEET (given during exam)
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (past FRQs)
REVIEW EDX REVIEW MOOC01 
REVIEW UDEMY REVIEW MOOC02 
REVIEW CODING_BAT 
REVIEW PRACTICE_IT 
REVIEW RUNESTONE 
AUDIT CS50

RECOMMENDED AP CALCULUS REVIEW:
CRIB SHEET (not given during exam) 
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (latest AB FRQs)
REVIEW APCENTRAL (latest BC FRQs)
REVIEW APCENTRAL (older AB FRQs)
REVIEW APCENTRAL (older BC FRQs)
REVIEW EDX MOOC01 
REVIEW COURSERA MOOC02

XTRA CREDIT FILKS RUBRIC 
(1 video = up to 5 bonus points):
1) Use a recognizable tune.
2) Karaoke entire song changing up the words (about STEAM).
3) You are Singing, Dancing or Playing an instrument.
4) You upload your video to YouTube and provide the url.
5) YouTube Description includes the lyrics.

XTRA CREDIT ARTICLES RUBRIC
(up to 5 articles = 1 bonus point each):
1) Cover Sheet is a Summary of the article.
2) FullPage, 12 pt, DoubleSpaced, 1" Margin.
3) Article has to be STEAM related
4) Article has to be a current event.
5) Copy of entire article is attached.

Sunday, March 1, 2020

Computing Science Education 2020 (Part 1 of 3)

Computing Science Education 2020 
(Part 1 of 3)


What is the State Of Computing Science education in 2020? I don't know if I can speak to that except from my own experiences at my own High School, so that's what this blog will be about. Note further that I'm referring to Computing Science and not Computer Science. I teach Mathematics and Computer Science, I've also been known to teach Chemistry and Physics, at a Middle School, High School or Community College in New York State every year since 1984. However, my primary interest in Computer Science is in a little known niche called Computing Science or Scientific Computing. 


Scientific Computing is all about modeling real world phenomena, running simulations and exploring what if scenarios, using programming environments and computer algebra systems such as Mathematica, MATLAB and SPSS. I've taught with free versions of these packages for decades in Linux: SAGE, Octave and R. We also do a lot of modeling in Computer Science class with programming languages from FORTRANBASIC and Pascal to C++, Java and Python even Logo and Processing!


I'm not teaching AP Computer Science A (CSA) this year so as to restart my curriculum with our intro Computer Science Honors (CSH) course using Python. I currently have 18 students in CSH, but I have a lot of seniors, so only 9 students are going on to CSA next year. We can't run a section with less than 13 students, so we may have to combine the 2 sections next year with 12 students that signed up for CSH. So I'll be back to CSA in one year for the noobie students. 


We had 2 sections (CSH and CSA) for many years (since 1984). Recently, we stopped populating CSH and put everyone in CSA but our results for those 5 years were poor on the AP exam, so we brought CSH back this year. The idea was to have 2 sections each year from now on, but no dice. I was asked to teach both courses simultaneously in one section next year, but that would be even more disastrous! 


Approximate Enrollment History
CSH 24 Students 1984-2014
CSA 12 Students 1984-2014
CSH 00 Students 2014-2019
CSA 24 Students 2014-2019
CSH 18 Students 2019-2020
CSA 00 Students 2019-2020
CSH 00 Students 2020-2021
CSA 21 Students 2020-2021


I have taught the intro class using several versions of BASIC from 1984-2010. We did not call it CSH then and it wasn't a full year course either. The intro CompSci class was 2 semester courses. The first one was called Computer Math (CM) and the second was called Advanced Computer Math (ACM). We changed the name of the intro course to Computer Science Honors in 2010 when we made it a full year course taught with Python. We use Litvin's awesome Discrete Mathematics text and we also do some turtle.py graphics in IDLE and visual.py 3D graphics in VIDLE


My school just started an AP Computer Science Principles (CSP) section this year, so I'm competing with that course too. I'm a member of the Math dept. CSA has always been taught by our dept. CSP is currently taught by a Science teacher. I didn't want to teach CSP as it's too much like a CS 101 class in college for non majors. Further, CSP has five modules, only one of which is about algorithms based solely on pseudo code... not my cup of tea.


FYI, I also teach Computing Science Lab (CSL) for Calculus students learning Computer Algebra Systems and Computing Science Independent Study (CSI) for students who have taken CSA and want to build a Linux cluster. We haven't had the enrollment to offer CSL for some years now, but we cover Computer Algebra Systems is preCalculus Honors now. As you can see, for better or worse, I have been the only teacher in my school in charge of maintaining and developing CompSci related curricula like this (CSH, CSA, CSI and CSL but not CSP) over the course of the past 36 years!

Well, that's all folks.

Generally Speaking,
A. Jorge Garcia

 
Applied Math, Physics and CS
www.patreon.com/calcpage2020

www.youtube.com/calcpage2009

calcpage.redbubble.com

society6.com/calcpage






2015 NYS Secondary Math PAEMST Nominee


Teaching with Technology, 
pastebin youtube slideshare 
mathforum apcommunity sage

(IDEs & Code)
MATH 4H, AP CALC, CSH: SAGECELL
(Curriculae)
CSH: CodeHS
APCSA: Big Java
APCSA: CSAwesome

RECOMMENDED AP COMPSCI REVIEW:
CRIB SHEET (given during exam)
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (past FRQs)
REVIEW EDX REVIEW MOOC01 
REVIEW UDEMY REVIEW MOOC02 
REVIEW CODING_BAT 
REVIEW PRACTICE_IT 
REVIEW RUNESTONE 
AUDIT CS50

RECOMMENDED AP CALCULUS REVIEW:
CRIB SHEET (not given during exam) 
REVIEW BARRONS BOOK (see me)
REVIEW BARRONS ONLINE 
REVIEW APCENTRAL (latest AB FRQs)
REVIEW APCENTRAL (latest BC FRQs)
REVIEW APCENTRAL (older AB FRQs)
REVIEW APCENTRAL (older BC FRQs)
REVIEW EDX MOOC01 
REVIEW COURSERA MOOC02

XTRA CREDIT FILKS RUBRIC 
(1 video = up to 5 bonus points):
1) Use a recognizable tune.
2) Karaoke entire song changing up the words (about STEAM).
3) You are Singing, Dancing or Playing an instrument.
4) You upload your video to YouTube and provide the url.
5) YouTube Description includes the lyrics.

XTRA CREDIT ARTICLES RUBRIC
(up to 5 articles = 1 bonus point each):
1) Cover Sheet is a Summary of the article.
2) FullPage, 12 pt, DoubleSpaced, 1" Margin.
3) Article has to be STEAM related
4) Article has to be a current event.
5) Copy of entire article is attached.