Additional profile information on Alfred Thompson at Google+
Trying something different today. Here is a guest post by Karen Schweitzer who has found a lot of interesting online courses in computer science. You can also find free curriculum resources at Microsoft’s Faculty Connection.
It is no longer necessary to pay tuition and enroll in a formal program to learn more about computer science. Some of the world's most respected colleges and universities now offer free courses online. Although these courses cannot be taken for credit and do not result in any sort of degree or certificate, they do provide high quality education for self-learners. Here are 15 computer science courses that can be taken for free online:
Introduction to Computer Science - Connexions, a Rice University resource, hosts this free course that introduces students to computer science. Covered topics include computer systems, computer networks, operating systems, data representation, and computer programming.
Introduction to Computer Science and Programming - This free Massachusetts Institute of Technology course provides an undergraduate-level introduction to computer science and computer programming. The course includes online readings, assignments, exams, and other study materials.
Mathematics for Computer Science - This free course, also from the Massachusetts Institute of Technology, teaches students how math is relative to computer science and engineering. Course materials include lecture notes, problem sets, assignments, and exams.
Introducing ICT Systems - The UK's Open University provides this free online computer science course to self-learners who want to gain an understanding of ICT (information and computer technologies) systems. The course is designed for introductory students and can be completed by most people in less than 10 hours.
Programming with Robots - Capilano University offers this free online computer science course to self-learners who want to explore computer programming and robotics. Course materials include tutorials, readings, lectures, exercises, assignments, and quizzes.
System Design and Administration - This free computer science course from Dixie State College focuses on computer information systems and technologies. The course introduces students to system design and administration through lectures notes, assignments, and other self-guided study materials.
HTML Basics - The University of Washington Educational Outreach Program offers several free courses, including this free HTML course. The course is designed for beginning level students who are unfamiliar with HTML documents, tags, and structure.
Software Applications - This free course from Kaplan University is a very basic course for people who want to learn more about using software applications. The course covers Internet applications as well as word processing, spreadsheet, communication, and presentation apps.
Object-Oriented Programming in C++ - The University of Southern Queensland offers this free computer science course to teach students the basics of C++ programming and object-oriented design. The course includes 10 modules, multiple lectures, and assignments.
Operating Systems and System Programming - This free online course from the University of California-Berkeley includes a series or audio and video lectures on operating systems and system programming.
Data Structures - This free audio/video course, also from the University of California-Berkeley, covers data structures through a series of online lectures.
Artificial Intelligence - The University of Massachusetts-Boston offers this free computer science course to self-learners who are interested in artificial intelligence (AI). The course uses assignments and other study materials to teach students how to write programs.
Information Theory - This advanced-level computer science course from Utah State University teaches concepts relating to the representation and transmission of information. Course materials include programming and homework assignments.
Network Security - This free computer science course from Open University is for master-level students who have substantial knowledge of computing. The course explores a wide range of topics, including network vulnerabilities, network attacks, encryption, cryptography, access control, and authentication.
Computational Discrete Mathematics - Carnegie Mellon University provides this free computer science course through the school's Open Learning Initiative (OLI). The self-guided course is ideal for independent learners who want to gain a better understanding of discrete mathematics and computation theory.
Guest post from education writer Karen Schweitzer. Karen is the About.com Guide to Business School. She also writes about online colleges for OnlineCollege.org.
Updated with additional links on September 3rd 2009.
Here is a quick overview of the first item in the list.
Learn the underlying skills and principles of software development--as you design and build your first games for Xbox 360, Windows, and Zune.
Designed specifically for students with no computer science background, this curriculum teaches the fundamentals of C# programming and the XNA Game Studio framework--for skills you can apply to game programming and beyond.
· Write code to create and control game behavior
· Build the game display--color, graphics, text
· Create multiplayer features
· Capture and cue sounds
· Process input from gamepads and keyboards
My friend Clint Rutkas recently finished a project to create a machine that mixes drinks. (You can see a demo at Drunktender lives! A brief live demo) Now a computerized machine that mixes adult beverages is a cool thing for a party in a geek sort of way, but more than anything else Clint started the project as a learning experience.
Time and again you’ll hear people say that the best way to learn anything is to need to learn it to solve a problem. So coming up with a challenging, interesting, potentially useful and ideally fun project is often the way people choose to learn new things. It’s not just programming and computer science either. I look on projects that require me to buy and learn how to use new power tools as a double win. Well maybe even triple win. I learn something new, I create something useful and I get a new power tool I can use on later projects. Yes, I have heard “now that you have that [cool tool] I want you to also …” I can live with that.
I see this as directly applicable to how we teach students. It is not enough to tell students “trust me this will be useful some day.” They don’t buy it. They want to see value now. This should have some impact on how we choose/assign learning projects. We have to be careful to understand the needs students see and the problems they are interested in solving. This was brought home to me in a conversation I had with a student once. It went something like this:
Student: We need more projects that mean something. Smug teacher: Oh you mean like that project we did about balancing checkbooks? Student: No, I mean like tic tac toe.
Student: We need more projects that mean something.
Smug teacher: Oh you mean like that project we did about balancing checkbooks?
Student: No, I mean like tic tac toe.
Clearly we were seeing meaningful differently. Fortunately I am a believer in the value of the tic tac toe project. But also perhaps I needed to work a bit on the things I was teaching with the checkbook project.
Students will work their tails off to learn things that solve problems they want to solve. I’ve sent more than a few students off to math teachers to learn the mathematics they needed to create missile/rocket games. One student learned far more than the scope of our course to create an awesome Tetris clone one year. If you can keep a secret I spent more hours in the computer lab the semester of college when I didn’t have a computer course to create some programs that solved problems I wanted to solve. That sort of thing has continued my whole career.
I occasionally created projects for my students on the spur of the moment based on classroom discussion. It was more work for me of course. I would have to run to my computer after class to make sure I could solve the program or at least learn about the problems students were going to run into. And there was the rush to create a rubric for grading purposes. Worst of all figuring out how long it would take students to do made schedules a little more complex at times. But I think the effort was worth it. The students learned more because it was a project they had an investment in. I reused many of these projects as well of course. Never completely discard something that works. :-)
Time and again I hear students complain about computer science courses that are just math courses. Now I agree there is a relationship (more on that tomorrow) but just because a teacher was trained as a math teacher and loves math to pieces don’t mean all their students will. As with writing, in teaching we have to consider the audience. Do our projects allow students to “scratch an itch” that they have? Do we create opportunities for students to create their own projects that will create an internal motivation to learn? Do we give students an opportunity to push themselves? They’ll push themselves a lot harder than we as adults can ever push them. We need to give them the opportunity though. How do you do that in your classrooms?
Some related posts by smarter people than me that I recommend you read: