Tuesday, April 01, 2014

Thinking about Vo-Tech Programming & Web Development Curriculum

I get questions. By email, twitter, LinkedIn, Facebook and more. Seems like they come just about everyway. And I love it. Recently I got a question about vo-tech curriculum. I’ve been on advisory boards for quite a number of career/technical high school computer programming and web development programs over the last few years so the question is not a surprise. But for some reason this one had me thinking a lot more than usual.

If you were to begin teaching voc tech high school students programming and web development today would your curriculum be primarily based on Microsoft / Windows applications, Linux and Java or Mac OS X and iOS? The main goal being to teach fundamentals and core concepts so that when graduation came in four years their skill set foundation matched the majority of needs in the industry or aligned best with a college choice in CS?

A lot to think about here. Operating systems, programming languages, development paradigms and web development. It’s all getting blurry these days. And Predicting the Future of Computing is hard! Though all of that I have to work though my personal biases (People with a choice actually choose to use Linux? Or Java?) to try and outline something that is best for the most students. Whoa!

Career/Tech high schools are different from standard high schools. The vocabulary is different in ways that reflect different goals and points of view. Career/Tech high schools are largely about preparing students for jobs. In many trades that means apprenticeships and the like. For some it means entry level jobs without formal internships. For programming and web development there are no real apprenticeships and entry level jobs for HS graduates are rare and hard to come by. So most programming and web development students do go to college – some four year and some two year community colleges. Even still many of then work coop jobs or internships. The school to work focus is different from other high schools where the focus is more often school to more academia.

So what would I suggest for a career/technical program? Flexibility and project based learning. Ah, but specific tools and platforms?

Let’s start with web development. With software, including virtualization software, available for cheap to free though DreamSpark (https://www.dreamspark.com/) cost should not prevent a school from teaching students to set up their own web servers using both Linux/Apache and Microsoft. Build them in virtual drives. Knowing some thing about both is better than picking one or the other.

Expression Studio, still available though DreamSpark, is great for teaching web development including HTML and CSS. A great start. For programming, you’ll want students to know some HTML 5 and JavaScript. Maybe introduce some Hack but I don’t know enough about that to be sure. But it does seem like it has more of a future than plain PHP or Ruby.

For programming, mobile and touch are the future. JavaScript is a growing thing with Windows 8 touch apps. And nicely that fits in with the web programming. I prefer C# to Java or C++ but you will want to teach multiple programming languages during the program. The second language is often thought of as the hard one to learn so if they are on language three when they get out of high school things should just get easier.

A career/tech school should have tablets and phones available for students to develop on. Touch is different. Windows and Android would be my recommendations but if you have Apple fans iOS is in high demand. Can you do all three? Maybe. Depends of the faculty and the students. I know a lot of people would say do iOS and Android and forget Windows. I think it is far too early to count Windows modern (what they used to call Metro) apps out of the running. There are just too many of those systems out there.

College prep schools who have CS programs usually teach the Advanced Placement CS course. I am not a fan in general but that course really doesn’t make send for a Career/Tech school. For one thing the sort of students who thrive at a career/tech school learn better in a much more project based learning environment with theory being taught in a work related context rather than the way APCS tends to be taught. Also it’s too language focused for my tastes and most of these students are problem based and see the language as a tool they will learn as needed.

I think most Career/Tech schools do a great job of getting all of the same concepts taught without the straightjacket of the APCS curriculum. Your mileage may vary of course.

Lastly, for anyone who didn’t run away calling me an idiot, I’d like to talk about the exploratory. For those not familiar with Career/Tech schools, many of these schools run their freshmen students though a serious of departments (called “shops” in career/tech speak) for between one and four weeks. The idea if for students to try out the programs and make a more informed decision about which one they really want to take.

The key here is to have students say “wow” and find something that excites them.  Fun is also a good thing. The specific tools or projects almost don’t matter here. What matters is getting them interested. Any number of tools are used. Alice, Scratch, Small Basic, Visual Basic, Python, App Inventor and Gamemaker are all used with success by different schools. I would add TouchDevelop to that list as a possibility. I think a day or two creating a simple web page using plain old HTML in a text editor cane be useful as well. I hear a lot of “wow” when students open the first web page they create in a real web browser.

There is no real one size fits all for career/technical high schools anymore than there is for college prep high schools (see also Have We Reached a Consensus on a National CS Curriculum?) but there sure are a lot of good options to choose from.

No comments: