What to do with labs?

Creating programs in Computer Science is an absolute must and the whole point of taking the class.  Why did you sign up for Computer Science is you have no desire to actually get your hands dirty and build something?

All students in every Computer Science class need to experience the joy of coming up with an idea and watching it dance around the screen.  Nothing quite like that.

The big issue today is that it is so easy to cheat either by borrowing code from another student or letting ChatGPT do your work. 

You hope that most students honestly do the work and enjoy making things themselves as that is the whole point, but that is not always the case.

What is a solution?

Do not count the labs / projects much in terms of the overall grade.  Grade the labs / projects however you feel comfortable ( spot check, look at uploaded code, use an auto-graded set of problems ), but weight the labs less than other parts of the overall grade.

Assess your students grasp of the labs concepts by having each student write code on paper on tests and quizzes.  Create Free Response Questions that assess the same concepts and algorithms as your labs / projects.  The test and quiz grades will be weighted more than the labs.

Spend your time grading the hand-written code and providing feedback there rather than spending time evaluating labs that could have been created by anyone.

Auto-graders are great and they save time, but students borrow code and throw it in the auto-grader all of the time. Solutions to many of the commonly used auto-graded problems can be found posted all over the internet.

Well-crafted Free Response Questions do a great job of creating accountability.  If students complete the labs / projects honestly, they will score really well on the FR tests and quizzes.

Need Labs and Free Response Questions? A+ Comp Sci has it all.

Tons of Amazing NEW Stuff!

Local Java IDEs for High School

There are lots of local IDEs you can choose for your school and computer science classes.

Here are a few bits about local Java IDEs.

The 3 Java IDEs that I prefer in no particular order are :

Intellij   –  FREE

The community version is what you want :

https://www.jetbrains.com/idea/download/?section=windows

https://www.jetbrains.com/help/idea/getting-started.html

Eclipse  –  FREE

https://www.eclipse.org/downloads/packages/installer

VS Code  –  FREE

https://code.visualstudio.com/Download

https://code.visualstudio.com/docs/java/java-tutorial

I would say that my high school students seem to prefer Intellij to Eclipse.

I have used both for many years for in-class and contest use.

College students / industry professionals that I know seem to prefer VS Code as VS Code makes it very easy to switch between different languages.

I will not recommend an online IDE as I feel strongly that students should use a local IDE.

If you need amazing Java Curriculum Materials, check out the A+ Computer Science materials. The BEST JAVA MATERIALS on the PLANET!

AP CS A Exam Tips and Strategies

Here are some of my last minute tips for the AP CS A Exam.

Multiple Choice – 90 minutes

There are 40 MC questions worth 1 point each

Cycle through the test more than once

Answer the easy questions first

Skip long trace through questions to start – answer these last

Bubble your answers as you go

Know your sorts and searches really well – https://visualgo.net/en

Practice tracing recursion if that is tough for you

90 minutes will go fast so manage your time

Free Response – 90 minutes

There are 4 FR Questions worth 9 points each

Know the pre-defined topics for each FRQ
Question 1 – Methods and Control Structures
Question 2 – Classes
Question 3 – Array \ ArrayList
Question 4 – 2-D arrays / matrices
NOTE – Strings always make an appearance somewhere

Read all 4 FR questions before writing any code

Write the code for the easiest question first
Get points on the board early

If you are writing a return method, make sure to return

Check carefully to see if part B must call A and such – not optional

Check for static methods vs methods in a class with instance variables

If extending a class, make sure you have super calls and method overrides where needed

Final Bits

Know how to chop up a number digit by digit using % 10 and / 10

Know how to chop up a string using substring and indexOf

Know how to remove multiple instances of the same item from an ArrayList

Lastly, have fun!

Computer Science is fun!

Need extra FRQ practice?

Why Contests?

I have had the opportunity over the last 28 years of participating as a coach in high school computer science programming / coding contests.

Why have I stuck with it for so long?

For me, I find the whole process a ton of fun.  Seeing students dig in to learn the basics up to advanced topics is fun. 

I even had the opportunity to experience the contest process with 2 of my sons, hoping the 3rd guy will get in on the fun as well. 

If it was not fun and important, I for sure would not have kept fighting the good fight for so long. 

I also like winning.  I have been a part of over 14 state championships ( individual and team ) at 3 different high schools. 

Why should students get involved?

For the students, there are 2 main points.

First, working as a team is a great skill that takes practice to master. 

I think learning team work is often undervalued in many fields, including Computer Science.  Teaming is a great way to get things done and a must if participating in contests.  As most contest teams consist of 3 members sharing 1 computer, team work can make or break you. 

Second, students fully master tons of basic concepts as well as learning algorithms and concepts usually way more advanced than what is covered in class. 

I hear from students regularly that college has been easy due all that they learned as part of the computer science team.  The same holds true for job and internship interviews.

Many of my students stress that working so many contest problems preparing for and participating at contests made technical interviews really easy.  

Many of the contest problem concepts learned as a member of a computer science team are the same concepts used when creating technical interview questions as well as those encountered in upper level college courses.

Solving a maze problem preparing for a contest sure takes the pressure off when seeing a maze problem as part of a technical interview.   I have had former students interview with companies all over and many if not all have stated how well the contest process prepared them.

Some of the common computer science concepts seen as interview questions that are also part of contests include – Mazes, Data Structures, and Dynamic Programming.

Most high school classes just do not have time to break down all of the concepts that are part of contests.  It really does require practice outside of the classroom both individually and part of practice sessions.  Contests provide a venue and a goal for learning more advanced concepts and algorithms.

I have seen students that were not really motivated to learn more than the minimum rise up and learn way more than expected once they got into the experience of participating at contests and getting in on the winning fun.

To wrap up, get your students involved in face to face contests or virtual contests.  If there are no contests in your area, be the first one to host a contest.  Reach out and I will be more than happy to help.

Looking for contests – https://www.apluscompsci.com/cs_cont_list.htm

Need help getting started – https://www.apluscompsci.com/contestmaterial.htm

Email me if you need help.

How to win it all – UIL Computer Science

This post is about winning big at UIL Computer Science

These tips are only suggestions and only apply for Computer Science.

First, take a look at my detailed slides regarding contest prep and success

https://www.apluscompsci.com/Aplus_Contest_Strategy_Session_2021.pdf

Or, you can read the following hightlights.

Step 1 – Work lots of old tests and packets

Step 2 – Work lots of old tests and packets

Step 3 – Work lots of old tests and packets

Step 4 – Use all of the steps that I listed in the pdf linked above.

Seriously, hard work is what it is all about.

Google and research are important as well.

Best of luck to all at UIL Region and State this year!

Preparing for the AP CS A Exam Free Response

Here are some tips for gearing up for the AP CS A Exam Free Response

Work lots of old AP CS A Free Response Questions

Step 1 – write them out on paper

Step 2 – type the code up and run it

Step 3 – check your output for correctness

Start with 2021 and work backwards.

I have posted some old FRQ projects and review slides.

https://www.apluscompsci.com/ap_computer_science_free_response.htm

Past AP Exam Musings

Each year, I try my best to predict the AP questions.

Normally, I get somewhat close.

It is not quite as much fun as in the past as all four questions have been labelled so we know the concepts tested for each of the 4.

Here are my unofficial musings for the 2020 exam.

For this year, we have 2 questions : 1 array / ArrayList question and 1 method / if / loop question

For question 1, we have a couple things to consider.  First, will the question be an array or an ArrayList.  Second, will be the array or ArrayList house types for which we are familiar like integers and / or Strings or some type [ class ] we have never seen before.

Over the years, one dimensional array questions have been nearly non-existent as compared to the number of ArrayList questions.  The HorseBarn question from 2012 was an array of Horse [ Horse[] ].  That was fun.  Part b of that question had a bit of sorting to it.

There have been several List< String > and List< Integer > questions over the years.  Digits from 2017 is a good example.

The AP CS A exam has a long history of List < THING > questions going all of the way back to 2006.  The Cookie Order Question from 2010 [ List< CookieOrder > ] is a great example of a list of some class as is the Climbing Club [ List< ClimbInfo> ] question from 2012.  WordPair from 2018 and Gizmo from the 2020 sample questions are in the same group.

For question 1, I envision a List < THING > question like CookieOrder / Gizmo / WordPair with some type of sort algorithm component.  Order all of the THINGs in some order based on some specific value housed in the THING.

For question 2, we have a couple things to consider.  First, will the methods be part of a class with instance variables and such or will the methods be static utility methods.

Frog simulation from 2018 is a very good example of a class with instance variables where methods are calling other methods with ifs and loops possibly in the mix.

Self Divisor [ focus on % 10 and / 10 ] from 2007 and Calendar from 2019 provide examples of a class with all static methods with one method calling another method.  CheckDigit from the 2020 sample questions is another.

For question 2, I envision a Frog simulation type question with non-static methods doing some type of String manipulation.  String stuff would involve use of substring and indexOf.   2017 Phrase is along the lines of what I am thinking in terms of concepts and layout, but that question is way harder than I would expect to see this year.

DISCLAIMER – I have no earthly idea what will be on the exam, but it is quite fun to look at the old questions and try to guess.  I am operating totally on feel.

Email me or visit my site if you have questions or need any help.

If you need any last minute ap exam prep, I am still providing FREE access to the A+ Practice Site.
I recently loaded in a new set sorting free response review problems. There are also tons of other free response review problems in the site.

Take Care,

Stacey

Popular Programming Languages in 2019

It is always important to discuss programming language use with your computer science students. If they really like Computer Science, then they probably need to see some real world data regarding language use and job opportunities.

This article https://codeburst.io/10-top-programming-languages-in-2019-for-developers-a2921798d652 has some interested information.

One would assume Java and Python were at the top of the list, but JavaScript may surprise a bit. Learning Java and Python would seem to put a student in great position.