This forum is in permanent archive mode. Our new active community can be found here.

Intro to Software Engineering (Computer Science) Curriculum

edited October 2008 in Everything Else
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

  • First off, for what sort of school is this? A high school? A university? Secondly, I do not think Objective C is a good idea for a first language. Judging from the topics you've written down this is a class for people who are relatively new at programming. Just starting. There is a reason why Java is the standard teaching language, at least over here. It's easier as far as I know. Also, Software Engineering? To put it into perspective, Software Engineering is a Bachelor of Science Computer Science first year third quarter class over here. Last thing, one period is how long exactly?
  • The best introduction to computer science I have ever seen is "How to Think Like a Computer Scientist.

    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.
  • Theoriginal version is based on Python, butthere is also a Java version. If I were to make an introductory CS course, I would base it largely on that book.
    Georgia Tech's intro CS course is based solely around that book.
  • edited October 2008
    This is will be a high school level course.
    Also, Software Engineering?
    The school already has a "computer science" course. I need to make sure that this course does not step on anybodies toes. If I call it Intro to "Software Engineering" it makes it look like a technology course, and therefore in my department. If I call the course "Computer Science 1", or anything of that nature, I am in danger of making people believe it belongs in the business department with the other so called computer science courses. I know its stupid but schools are largely political and I don't want enemies.
    Secondly, I do not think Objective C is a good idea for a first language.
    I was thinking about Objective C because of Apples free tools. I was taught C++ first, and am finding Objective C much cleaner.
    he best introduction to computer science I have ever seen is "How to Think Like a Computer Scientist.

    Theoriginal version is based on Python, butthere is also a Java version. If I were to make an introductory CS course, I would base it largely on that book.
    I will check this out.

    (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.
    Post edited by Cramit on
  • I am in danger of making people believe it belongs in the business department
    Who are these idiots, and what makes them think that? Computer Science != Business talk. The word 'science' is there for a reason.
    What free and easy to use tools exist for java or python programing on mac and pc.
    A text editor, and Sun's jdk. And don't worry, Java applications are also command line, building a GUI around the stuff is possible, but just annoying (imho), then again, it is very useful for the Model-View-Controller concept that is taught in (my/our) Software Engineering class.
  • The word 'science' is there for a reason.
    Not really. CS has no more to do with science than it does with buisness.
  • Who are these idiots, and what makes them think that? Computer Science != Business talk. The word 'science' is there for a reason.
    Yeah, I know, thats why I am looking to start a course. Unfortunately since the business department already has it, rightfully or not, they don't want to give it up. Again with the politics.

    I see that Xcode has an option to build python-cocoa apps, can python be used to make GUI apps easily?
  • The best introduction to computer science I have ever seen is "How to Think Like a Computer Scientist.

    Theoriginal version is based on Python, butthere is also a Java version. If I were to make an introductory CS course, I would base it largely on that book.
    I recently wanted to get into software programming, so listened to your podcast on the topic, and I'm doing really well so far with this book. Python is a perfect launching point for me as the last programming I did was back in the very early nineties using Basic, and Python is just idiotproof enough that I'm grasping it easily.
  • Your present course plan looks fine. However, most high school students lack the solid mathematical background required to do well in 'real' computer science. Unless your school has some sort of discrete math or similar class, I would be wary of trying to teach them computer science right away. Of course, that all depends on the nature of those 'advanced features' you're planning to discuss.
  • edited October 2008
    I agree that an introductory course to Software Engineering should almost certainly be based on Python.
    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.
    Post edited by lackofcheese on
  • I am reading through How to Think Like a Computer Scientist: Learning Python and I really like it. I hadn't ever used Python so I am doing the examples and am very impressed with how easy it is to use. I think I am gong to use that book as my text and I will introduce Python-Cocoa, or a windows toolkit, at the end to show the students how the stuff they've learned can be used in "real" applications. It is frustrating, but I have to make sure that I can attract kids to the class since it is an elective.
  • I have been working though How to Think Like a Computer Scientist: Learning Python and have hit a snag. I am having trouble getting GASP to work properly in windows. It creates a window, but that window doesn't respond. Any ideas?
  • I have been working though How to Think Like a Computer Scientist: Learning Python and have hit a snag. I am having trouble getting GASP to work properly in windows. It creates a window, but that window doesn't respond. Any ideas?
    What chapter is that?
  • Chapter 4 and 8. Chapter 4 only has an introduction to graphics, Chapter 8 is a large example in making a game. The class can be done without it, but it seemed like it would be a lot of fun to play with.
Sign In or Register to comment.