Go to Post Secure your battery well, or it will fly like a fish. - Nate Laverdure [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
Thread Tools Rating: Thread Rating: 4 votes, 5.00 average. Display Modes
  #1   Spotlight this post!  
Unread 27-04-2015, 18:40
AndyB871 AndyB871 is offline
Registered User
FRC #0871
 
Join Date: Jan 2012
Location: East Islip
Posts: 37
AndyB871 has a spectacular aura aboutAndyB871 has a spectacular aura aboutAndyB871 has a spectacular aura about
How to: Teach java?

Ive been poking around the boards for a while trying to figure out where to place this post. I noticed there was a curriculum board, but was worried it didn't get enough attention so in the end I decided on here;

Anyway,

I'm at a bit of a dillemma this year. I'm the head coach and software mentor for my team 871, and my team has vehemently requested to switch languages. Traditionally we used labview because of our very very high student turnover rate and over the years I've developed a whole set of lessons and a plan I work through each year with the kids.

Well, now they want to try out Java.

I personally think it's great my students are ready to take the next step, and I myself am very experienced with Java. My problem is that I don't really know where to start with my lessons. I wanted to take a broader approach and teach about more general Software Engineering principles before I dove into Java and OOP. I felt like having that base knowledge of design concepts would help them more quickly grasp Java and what it's capable of.

I've been browsing the internet and reading whitepaper on learning and teaching, how to teach programming, etc. etc. but I still haven't found a decent place to start. That being said, do any of you mentors out there have some advice on where I should start? Do you have a learning plan that you work through? How do you handle students with radically disparate capablities?

Any help would be appreciated.
Thanks so much,

-Andy
Team 871
  #2   Spotlight this post!  
Unread 27-04-2015, 19:04
mail929 mail929 is offline
Registered User
AKA: Liam
FRC #0111 (WildStang)
Team Role: Alumni
 
Join Date: Sep 2012
Rookie Year: 2011
Location: Chicagoland
Posts: 16
mail929 has a spectacular aura aboutmail929 has a spectacular aura about
Re: How to: Teach java?

Team 111 uses the MIT OpenCourseWare for Java. We find it pretty effective and well paced to teach incoming software students. We have a meeting every week before build season where lessons are taught and then an assignment is usually given to be turned in the next week. If you want to look at something more robot specific we open source our code every year sometime after champs as well as some other teams like 254.

Good Luck!
  #3   Spotlight this post!  
Unread 27-04-2015, 19:13
AndyB871 AndyB871 is offline
Registered User
FRC #0871
 
Join Date: Jan 2012
Location: East Islip
Posts: 37
AndyB871 has a spectacular aura aboutAndyB871 has a spectacular aura aboutAndyB871 has a spectacular aura about
Re: How to: Teach java?

I've looked through your source before, along with some others, to get a feel for the WPI libraries and it's been very helpful, but that's all because I _already_ have the basis of understanding. Teaching is hard (as I've learned since I took over this team)!

I'm facepalming a bit that I didn't think to check out the MIT stuff. Thanks for the pointer!
  #4   Spotlight this post!  
Unread 27-04-2015, 19:25
mail929 mail929 is offline
Registered User
AKA: Liam
FRC #0111 (WildStang)
Team Role: Alumni
 
Join Date: Sep 2012
Rookie Year: 2011
Location: Chicagoland
Posts: 16
mail929 has a spectacular aura aboutmail929 has a spectacular aura about
Re: How to: Teach java?

No problem. If you have any questions at all feel free to contact the team.
  #5   Spotlight this post!  
Unread 27-04-2015, 19:49
Spoam's Avatar
Spoam Spoam is offline
Registered User
AKA: Pedro M.
FRC #0955 (CV Robotics)
Team Role: Programmer
 
Join Date: Feb 2014
Rookie Year: 2012
Location: Corvallis
Posts: 54
Spoam is a jewel in the roughSpoam is a jewel in the roughSpoam is a jewel in the roughSpoam is a jewel in the rough
Re: How to: Teach java?

If you want something simpler for new students our 2014 robot code is very minimalist (no feedback loops or fancy objects) while still containing most of what you'd find in typical FRC code.

We typically have a generic skid-steer drivebase on hand for new programmers to work with after giving them a crash course on the control system and introducing them to C syntax and OOP (we start out by teaching them about variables, loops, scope etc. then give them challenges they must complete on their own like sorting an arbitrary array). When they're competent at programming we teach them WPI lib, and when they can make a simple robot run we have them start deriving drivebase kinematics and learning control loops on their own with a little bit of guidance and oversight. We also have 0 programming mentors on our team, so this is all done by student captains.

Our robot code this year was written entirely by sophomores on the team who were completely new to programming last year and has had PID-corrected strafe, field centric and robot centric holonomic drive code (from when our robot had slide drjve lol), a position and velocity PI controller for our elevator and more all designed by them.
__________________
2015 PNW District Champions (955, 1983, 2930)





Co-Creator of 955 OPR

Last edited by Spoam : 27-04-2015 at 20:06.
  #6   Spotlight this post!  
Unread 27-04-2015, 20:04
AndyB871 AndyB871 is offline
Registered User
FRC #0871
 
Join Date: Jan 2012
Location: East Islip
Posts: 37
AndyB871 has a spectacular aura aboutAndyB871 has a spectacular aura aboutAndyB871 has a spectacular aura about
Re: How to: Teach java?

@Spoam, that's more or less what I've done with LabView for the students. Do you have a set of challenges that you cycle through or are they typically new each year? Some examples?

This feedback is great BTW, thanks so much! I won't feel so underprepared this Thursday's session!
  #7   Spotlight this post!  
Unread 27-04-2015, 20:21
GeeTwo's Avatar
GeeTwo GeeTwo is online now
Technical Director
AKA: Gus Michel II
FRC #3946 (Tiger Robotics)
Team Role: Mentor
 
Join Date: Jan 2014
Rookie Year: 2013
Location: Slidell, LA
Posts: 3,592
GeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond reputeGeeTwo has a reputation beyond repute
Re: How to: Teach java?

Team 3946 has some java lessons and tutorials written by Gixxy, our founder. We also use Java for Dummies, and of course, the screenstepslive wpilib getting started and java tutorials.
__________________

If you can't find time to do it right, how are you going to find time to do it over?
If you don't pass it on, it never happened.
Robots are great, but inspiration is the reason we're here.
Friends don't let friends use master links.
  #8   Spotlight this post!  
Unread 27-04-2015, 20:24
Spoam's Avatar
Spoam Spoam is offline
Registered User
AKA: Pedro M.
FRC #0955 (CV Robotics)
Team Role: Programmer
 
Join Date: Feb 2014
Rookie Year: 2012
Location: Corvallis
Posts: 54
Spoam is a jewel in the roughSpoam is a jewel in the roughSpoam is a jewel in the roughSpoam is a jewel in the rough
Re: How to: Teach java?

Quote:
Originally Posted by AndyB871 View Post
@Spoam, that's more or less what I've done with LabView for the students. Do you have a set of challenges that you cycle through or are they typically new each year? Some examples?

This feedback is great BTW, thanks so much! I won't feel so underprepared this Thursday's session!
Sorting an array is one of our favorites because it's simple, but can be challenging because it requires someone to truly think like a programmer and translate a problem that's trivial for humans into something a computer can execute.

In a similar vein, we used a lot of (the simpler) project euler problems to get them into critical thinking and problem solving with code.

Along the way there would also be small challenges relevant to what we just taught them (like classes, file access, functions etc). Eventually we just tell them "write code so that this drivebase can move in all directions from joystick input" or "research x and y and implement it". If they get stuck, we give them guidance. Captains are always present for troubleshooting and tuning and review code before putting it on the robot (both to verify it will work, and to make sure it meets our standards).
__________________
2015 PNW District Champions (955, 1983, 2930)





Co-Creator of 955 OPR
  #9   Spotlight this post!  
Unread 27-04-2015, 21:14
Fusion_Clint's Avatar
Fusion_Clint Fusion_Clint is offline
Registered User
AKA: Clint Brawley
FRC #0364 (Fusion)
Team Role: Mentor
 
Join Date: Apr 2014
Rookie Year: 2013
Location: Gulfport MS
Posts: 235
Fusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond reputeFusion_Clint has a reputation beyond repute
Re: How to: Teach java?

Try this, FTC is going to JAVA next year and FIRST hired Intelitek to design a curriculum for the change. It is supposed to have 4-5 hours on the MIT app and another 5-7 hours on straight JAVA. Won't be available until September.

http://www.intelitek.com/pdf/FTC_Brochure_Final.pdf
  #10   Spotlight this post!  
Unread 28-04-2015, 02:15
gblake's Avatar
gblake gblake is offline
6th Gear Developer; Mentor
AKA: Blake Ross
no team (6th Gear)
Team Role: Mentor
 
Join Date: May 2006
Rookie Year: 2006
Location: Virginia
Posts: 1,935
gblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond repute
Re: How to: Teach java?

This one is OK, but it doesn't contain anything about FIRST Robots.
Oracle's Tutorial
__________________
Blake Ross, For emailing me, in the verizon.net domain, I am blake
VRC Team Mentor, FTC volunteer, 5th Gear Developer, Husband, Father, Triangle Fraternity Alumnus (ky 76), U Ky BSEE, Tau Beta Pi, Eta Kappa Nu, Kentucky Colonel
Words/phrases I avoid: basis, mitigate, leveraging, transitioning, impact (instead of affect/effect), facilitate, programmatic, problematic, issue (instead of problem), latency (instead of delay), dependency (instead of prerequisite), connectivity, usage & utilize (instead of use), downed, functionality, functional, power on, descore, alumni (instead of alumnus/alumna), the enterprise, methodology, nomenclature, form factor (instead of size or shape), competency, modality, provided(with), provision(ing), irregardless/irrespective, signage, colorized, pulsating, ideate
  #11   Spotlight this post!  
Unread 28-04-2015, 06:52
David Lame David Lame is offline
Registered User
FRC #0247
 
Join Date: Feb 2015
Location: Berkley, MI
Posts: 86
David Lame is a jewel in the roughDavid Lame is a jewel in the roughDavid Lame is a jewel in the roughDavid Lame is a jewel in the rough
Re: How to: Teach java?

If you are dealing with students who have absolutely no conventional programming experience, my advice on teaching Java is to download Visual Studio Express, and teach them C# for a few weeks. The languages are practically identical at the beginning level.

The advantage of Visual Studio/C# over Eclipse/Java is that the development environment is much easier to deal with. It's easy to set up Eclipse wrong and end up with something that doesn't work at all, with the problem being some obscure checkbox behind the scenes that no one would know to look for. Also, Intellisense on C# works better than its equivalent in Java. Finally, the easiest programs to work with for object oriented programming concepts are ones with a user interface, and Windows Forms programs are very, very, easy to write. Once they get variables, functions, classes and objects down, it will be fairly easy to transition over to Java and the FRC environment. Sure, they'll have to start typing String instead of string, but that's an easy transition.

Of course, I'm a Microsoft partisan myself. Programmers are notoriously religious about their favorite tools and languages, so a lot of people will think this is absolutely terrible advice. However, in the little bit of teaching I have done to absolute beginners, I've just found C# easier to deal with.
  #12   Spotlight this post!  
Unread 28-04-2015, 06:57
levydev levydev is offline
Registered User
FRC #0116
 
Join Date: Oct 2011
Location: northern va
Posts: 13
levydev is an unknown quantity at this point
Re: How to: Teach java?

1) Get familiar with java basics - syntax, variables defs , arrays, control loops. Run simple examples from the command line using a single Class with a main method.

2) Get a taste of Object Oriented Programming with Java. I think just a small introduction to understand Classes, Class instances, methods. Go back to the exercises in #1 and try to spread you code across multiple Classes ( One class definition per .java file should be sufficient)

After you've completed the above steps, you should have enough Java under your belt and may be ready to move on beyond the command line.

For FRC Teams this may be the next step.

https://wpilib.screenstepslive.com/s/4485/m/13809
  #13   Spotlight this post!  
Unread 28-04-2015, 08:46
Aero Aero is offline
consumes pizza, produces code
AKA: Ari Lotter
FRC #0865 (Warp7)
Team Role: Programmer
 
Join Date: May 2013
Rookie Year: 2013
Location: Toronto
Posts: 30
Aero is on a distinguished road
Re: How to: Teach java?

Quote:
Originally Posted by David Lame View Post
The languages are practically identical at the beginning level.
If you teach them one language for a few weeks than switch over, the differences are just going to confuse them more.

If you're teaching them Java, teach it from the beginning.
If Eclipse being complicated is a worry, I'd recommend IntelliJ IDEA as an IDE - they'll be happy to give your FRC team a free copy of the Ultimate edition if you email them.

For people with absolutely no programming experience, it's going to be hard to teach them pure Java and expect them to pick up on WPIlib easily. You can teach WPIlib from the start, but don't expect them to grasp the language's syntax quickly.
I taught a group of rookies Python over a few months. What I found worked best was getting them through basic syntax, then giving them challenges that required independent research to solve. I find teaching programming works better the more self-directed you can make your class.
__________________
2014 Waterloo Regional Winner (254 & 2056)
2014 Curie Semifinalist (118, 359 & 4334)
2014 Fall Fiesta Finalist (2056, 4476)
6 X Gracious Professionalism Award Winner
  #14   Spotlight this post!  
Unread 28-04-2015, 12:22
levydev levydev is offline
Registered User
FRC #0116
 
Join Date: Oct 2011
Location: northern va
Posts: 13
levydev is an unknown quantity at this point
Re: How to: Teach java?

Here is an interesting online tutorial that lets you write and execute basic code in the browser: http://www.tutorialspoint.com/java/index.htm. As you read through you'll see some sample code and a "try it" button. While in "try it" mode , you are able to change the code.

This may be a good way for someone to get started without being overwhelmed by the JDK and IDE installation. Although that would eventually be needed.
  #15   Spotlight this post!  
Unread 28-04-2015, 12:32
mathking's Avatar
mathking mathking is offline
Coach/Faculty Advisor
AKA: Greg King
FRC #1014 (Dublin Robotics aka "Bad Robots")
Team Role: Teacher
 
Join Date: Jan 2005
Rookie Year: 1999
Location: Columbus, OH
Posts: 635
mathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond repute
Re: How to: Teach java?

For an introduction to Java that kids can really dive into, try Robocode. I use it to introduce kids who don't have any programming experience to the basics of Java in the summer before they start my AP Comp Sci class. I am also happy to share some other lesson ideas if you would like. Send me a message.
__________________
Thank you Bad Robots for giving me the chance to coach this team.
Rookie All-Star Award: 2003 Buckeye
Engineering Inspiration Award: 2004 Pittsburgh, 2014 Crossroads
Chairman's Award: 2005 Pittsburgh, 2009 Buckeye, 2012 Queen City
Team Spirit Award: 2007 Buckeye, 2015 Queen City
Woodie Flowers Award: 2009 Buckeye
Dean's List Finalists: Phil Aufdencamp (2010), Lindsey Fox (2011), Kyle Torrico (2011), Alix Bernier (2013), Deepthi Thumuluri (2015)
Gracious Professionalism Award: 2013 Buckeye
Innovation in Controls Award: 2015 Pittsburgh
Event Finalists: 2012 CORI, 2016 Buckeye
Closed Thread


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 09:01.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi