Python is such a better language for teaching programming and CS fundamentals than Java or C++.
There is of course a case to make for teach C , ASM or LISP first.
Trying to teach something like OO best practices will be lost on students if they haven't done enough programming to understand code complexity and why OO might be a useful paradigm.
Java is especially bad because you need to use the static keyword as well and the System.out object just to get "hello world" working
While it might be unnecessarily punishing, Forth could be an interesting introductory language. I think it says something very positive about a language when the first thing[1] you learn to do isn't how to write an expression, make a loop or describe a conditional branch- it's how to define a procedure and break a task down into parts.
I've been following this in my spare time for the last month. I've found it really useful.
As a sysadmin who doesn't really do any proper programming day to day and ends up learning just enough to scrape by in a few languages, I've found it really beneficial to go back to basics and learn to think like a proper computer scientist.
I don't know about conventional wisdom but I can give you my opinion.
Disclaimer: I have not taken this course, neither am I a python Wizard.
Their stated goal:
"It aims to provide students with an understanding of the role computation can play in solving problems.
It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals."
The point here is that teaching python is not the primary goal so if you are already a competent programmer you may find it more efficient to pick up a more reference style book.
However, I can imagine this course explaining principles such as turing machines, possibly some data structures and computational logic.
Thus I can imagine it might be useful to people who are not going to be programmers but need an appreciation for the type of work that a programmers might do and what is possible with a computer. So maybe a business person or a designer.
It might also be useful for self taught programmers who want an introduction to the more rigorous aspects of CS and a more formal way of thinking about their programs.
No, this is 6.00, which sounds like it is aimed at non-majors. My 11 year old son wanted to go through it with me, and so far the first lecture was good for him. 6.001 is the SICP course.
While Python is my language of choice, I'm happy Waterloo starts off with Racket (Scheme/Lisp family language). Very little syntax to learn and great for recursion. I'm not really qualified to comment whats best, I just know I enjoyed it.
I am sure that there are a lot students that wish XYZ university taught CS with python. However, with all due respect I do not think HN is the right place to express your opinion about your university's curriculum.
jiggy2011|14 years ago
There is of course a case to make for teach C , ASM or LISP first.
Trying to teach something like OO best practices will be lost on students if they haven't done enough programming to understand code complexity and why OO might be a useful paradigm.
Java is especially bad because you need to use the static keyword as well and the System.out object just to get "hello world" working
RodgerTheGreat|14 years ago
[1]http://www.forth.com/starting-forth/sf1/sf1.html
kreek|14 years ago
datagramm|14 years ago
wyclif|14 years ago
jiggy2011|14 years ago
Disclaimer: I have not taken this course, neither am I a python Wizard.
Their stated goal:
"It aims to provide students with an understanding of the role computation can play in solving problems.
It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals."
The point here is that teaching python is not the primary goal so if you are already a competent programmer you may find it more efficient to pick up a more reference style book.
However, I can imagine this course explaining principles such as turing machines, possibly some data structures and computational logic.
Thus I can imagine it might be useful to people who are not going to be programmers but need an appreciation for the type of work that a programmers might do and what is possible with a computer. So maybe a business person or a designer.
It might also be useful for self taught programmers who want an introduction to the more rigorous aspects of CS and a more formal way of thinking about their programs.
stephensikes|14 years ago
wyclif|14 years ago
caycep|14 years ago
cschmidt|14 years ago
melvinng|14 years ago
emptyaccount|14 years ago
dfc|14 years ago