Intro to Software Engineering (Computer Science) Curriculum
I am at a school who's only "computer science" course is glorified web design and business application use. I am looking at starting a real CS program. I am going to title it Intro to Software Engineering to make sure it falls under the technology curriculum (my department). Since we are an apple school I am planning on using Xcode and Objective C as my base for the class. I will up date this thread if there is interest in helping me design the curriculum. Here is what I have written so far (sorry the forum does not like the oultine):
Intro to Software Engineering: ½ Year course, Single Period
Today we use computers on a daily basis. The focus of this course will be on learning the basics computer programming and will center on designing and building applications for Mac OS X in the Objective C language. In the process of learning how to create applications the course will introduce a large variety of programming topics including variables, arrays, strings, functions, and objects. The students will create both command-line tools, and applications with graphical user interfaces.
Software Requirements
1) The course will require the use of a computer lab filled with Apple Computers with Mac OS X
2) The Computers need Xcode 3.x and Mac OS 10.5
3) Alt. Computers with Xcode 2.3 and Mac OS 10.4
4) The Computers should also have terminal.app installed
Course Outline
1) Introduction
(a) What is a computer program?
(i) A series of very specific instructions that tell a computer how to do something.
(ii) There are many different ways that we can write the instructions.
1. Different Languages
2. Objective C
(iii) We will use a tool called a compiler to turn the instructions we write into instructions that the computer can understand
(b) Xcode
(i) Xcode is a program provided by apple to create new programs.
(ii) We will write all of our programs using Xcode.
(c) Demo Program
(i) A graphical program with 2 buttons and a label
1. first button writes hello world to the label
2. second button clears the label
(ii) Students will take many things for granted and will be exposed to many advanced features. This will peek student interest
Comments
The original version is based on Python, but there is also a Java version. If I were to make an introductory CS course, I would base it largely on that book.
(edit) I Have checked it out and it looks awesome, I'm just trying to decide whether or not I want to keep the course in text only. Part of me really wants to get the students into making graphical programs.
What free and easy to use tools exist for java or python programing on mac and pc. I want to get students working on GUI apps fairly quickly to get and keep kids interested.
I see that Xcode has an option to build python-cocoa apps, can python be used to make GUI apps easily?
Java is a good teaching language also, but that's only if you really, really want to push OO.
Scheme is another very interesting teaching language, but it is a very niche language, and while it is very good for explaining simple concepts, it is not as good for practical experience.
Because this is Software Engineering rather than Computer Science, Scheme is perhaps a bad idea as a result.
One thing I would like to point out is that for teaching basic programming, an interpreted command line is a tool of value approaching infinity, hence why I would strongly argue for such a language, like Python.
Considering you wish to make heavy use of GUIs (though I think they are completely non-essential to a basic programming course, high-school level or not), I guess that will be the greatest factor in your choice though.