I am a senior teacher in a small school and have been assigned introductory computer science for September.
I know very little about this subject. I did a bit of it a million years ago in university and recently have done very basic Arduino programming.
I’m a smart guy with a logical mind so I know I can do a good job.
Can someone recommend resources for me? Ideally, I would like to present progressive projects to my student and possibly branch off into Arduino projects later.
Any advice would be helpful. I don’t even know what programming language would be best.
You might ask, what about the people who taught it before? I don’t think this course has been offered in a classroom setting in my school. Previously, students have taken an online version. A colleague asked if I wanted resources in Turing. I think that is a very old language that I will want to stay away from.
Thanks in advance.
You really need to give us more information.
I’m guessing this is high school level if not grade school, or else you’d have more resources, because college-level CS is typically its own department these days. I’m guessing you’re teaching a very broad intro course with no expectation of a more advanced course later at the same school, because, again, you’re pretty much on your own from what you say. Therefore, I’m guessing you have very few resources.
I’d recommend going with Python for the programming language for the Arduino section, myself; it’s well-known, well-supported across multiple OSes, and there’s a lot of free resources out there to help you and the students. You might look into Guido van Robot as the very first step, before you move onto the Arduinos, because it is designed as a basic introductory software suite for people with no prior experience. By all means stay away from Turing, which does look like it’s obsolete and obscure, meaning you’ll have a hard time finding any information about it or resources for it.
Oh, to add on to my post: Because you’ll be teaching a broad survey course, Python is good because it’s both a real programming language and similar enough to other real programming languages that a lot of skills will transfer. It’s a good place to start as opposed to a dead end, is what I’m saying.
Frankly, Turing looks like a dead end.
Do by all means teach them about Turing - Alan Turing, that is.
Do you have the link to the online version? Can you post it here? It might be best to stay with that program at first since the students will be familiar with it and it will give you some structure. Essentially, use the online program as the “book” where students work on sections and you discuss it in class.
I do not have access to that. I will have to do some digging to find out how to get it.
I would go with whatever computers/software you have available at your school. I know it is NOT easy to get anything from a school district. And by the time you got whatever you wanted, all your students will have graduated from high school! (Maybe college.)
Anyway just show them how something simple can be programmed on a computer. search google.com for…
History of computers.
Programming using basic.
You will find Youtube videos which will quickly get you up to speed. Basically show the kids how you can enter in a set of simple instructions and get the computer to do something. And teach them the basic idea behind that.
Note at one time, computers had to be “wired” to program them! That is run wires from here to there. So being able to type in a set of programming instructions was a BIG advance!
Are you teaching “computer science” or “programming”? I ask because a lot of people say the former when they mean the latter.
Basically, will you be discussing if statements and for loops (programming) or sorting algorithms and big O notation (computer science)?
This is a grade 11 course, so 16 year olds,
Here is the course description but I think that I am free to do as I wish.
This course introduces students to computer science. Students will design software independently and as part of a team, using industry-standard programming tools and applying the software development life-cycle model. They will also write and use subprograms within computer programs. Students will develop creative solutions for various types of problems as their understanding of the computing environment grows. They will also explore environmental and ergonomic issues, emerging research in computer science, and global career trends in computer-related fields.
I would google around for some Open Educational Resources (OERs). Someone has probably taught the whole course or portions of the course you want to teach and put it in the creative commons for you to use.
I think it’s likely at least one of your students will know more than you about the topic.
I’d say either go all in with assembler (but I’d recommend against, unless you really know that these kids are going to be programmers one day) , or stick to basic logic and cool visuals by going with something like Flash, Phrogram, Context Free Art, of otherwise figuring out a quick and easy way for kids to get from code to visuals quickly, without a ton of scaffolding. So that might mean a simple graphics library for Python, or a library based on Java Swing that does all the work to create a window and animate the screen, just giving them the Graphics object to draw things with.
Get then drawing, then teach them the details of the programming language, so they can interact with their program, then maybe start doing some basics on algorithms for sorting or searching a graph, etc. if there’s still time left in the curriculum.
I’d say that the most important thing you can teach in a high school level computer science survey type course is the idea of logical thinking / algorithmic thinking. No real need to get into actual coding right away.
Like how do you actually solve a problem in terms of decomposing it into chunks you can actually act on, and how do you ideally solve each of those, and how do you string it all together?
I still kind of think that teaching this sort of thing in the context of a procedural language makes sense, at least early on, because they lend themselves to this kind of thing without a lot of overhead concerning objects, methods, inheritance, polymorphism, etc… that aren’t really germane to reinforcing the ideas of how you think logically and divide up your solution into chunks.
Something like ArduBlock might be great for this- it’s not about “coding” but about problem solving.
This strikes me as gross malfeasance on the part of the administration. Are there no teachers available who have at least some familiarity with the material?
No offense to the OP, who I am sure is a competent teacher who has been stuck with the job by the Powers That Be.
What resources will you have available for this class? Will the students be provided with a book? What computers will the students have access to? How many students do you expect to have in your class?
If the students are expected to have a book, consider one like this Python Programming: An Introduction to Computer Science. Python is a good beginner language. It’s relatively simple to use and is widely used in the industry. It’s also freely available on pretty much every computer platform. A book like this will go over both the concepts of computer programming and teach Python at the same time.
I think you need to use some sort of structured, pre-defined course material to teach this class. You’re going to be learning it at the same time. It will be better if you are using material produced by an expert rather than trying to create your own.
Are you familiar with the Raspberry Pi ? A really really cheap yet quite capable computer (basically a smartphone level device without the phone) designed primarily for education and hobbyists. They usually run Linux and you can use then for all sorts of programming - Python is very popular on them. You can also run web servers off of them, use them for web surfing, word processing etc. Best of all they have a bunch of pins on the board so you can use them for controlling electronics similar to an Arduino.
Python is probably one the best ‘serious’ languages for learning programming right now. Readily available on all popular platforms, easy syntax, well supported with books and on-line teaching materials plus it is really quite a good language for ‘getting things done’.
I think that this is an important distinction. The first Computer Science class I took, granted it was 1983 and PCs and household Internet were not ubiquitous, we spent some time on history, from Babbage and Lovelace, through to ENIAC and UNIVAC and then personal computing. Of course, there’s thirty years of history that could be added to that now. Only then was it we went in to some very rudimentary programming in BASIC.
I have just stumbled across this site: The Micro:bit Educational Foundation
In addition to throwing in someone unqualified to teach the material, I’m wondering what about existing course materials.
Isn’t there a big folder of stuff from previous times? Syllabi, homework assignments, tests, etc.
To have someone lacking the skills needed to teach such a technical course, to also not have the previous materials is really shocking. You really, really cannot expect someone to actually teach something they know very little about from scratch.*
The OP is in an awful situation. They should be prepared for it to not go well.
- When I was a CS prof, I would get assigned to start/revive a course on something either never taught before or wasn’t taught in a while (and the machine it used was gone and other fun stuff). But the core concepts I knew from way back and it was just another topic in CS that I knew something about. Step 1: Find a textbook.
I would echo this. There is a lot of best practice knowledge in computer science that can’t just be picked up as you go along. It will be very easy to create bad habits. Also, it will likely be very challenging for you to help students debug their programs. If you’re not experienced with the language or an experienced programmer in general, it might be difficult to spot the problems that cause their programs not to work.
It’s almost like they asked you to teach a piano class because you happen to know how to play a few simple songs where you only use one finger to play.
If possible, I would recommend the school delay this class for a year to allow you time to take computer science classes yourself. With a year to get up to speed, you would be much better prepared to teach a quality class.