Talk:Computer science program

What I suggest is a guide to self-study, so that people should know what to learn first, and what to learn after the basics. Tell your way of study if you think it's better! DarkFighter 02:36, 4 September 2006 (UTC)
 * My spelling sucks, please check the article...DarkFighter 22:55, 7 September 2006 (UTC)

Can we bring any material over from the Math Pages?
There is no sense in duplicating anything already done. Does anyone know where what is at math we can have moved here? --Darrell Ulm 23:30, 23 September 2006 (UTC)
 * If you are talking about Wikiversity pages that were created at Wikibooks, you can list them at Import. There is a standing request there for "mathematics", but you need to list specific pages. --JWSchmidt 20:33, 24 September 2006 (UTC)

Please report your opinions!
It's important for me. Comments, suggestions, corrections are welcomed. DarkFighter 02:36, 4 September 2006 (UTC)
 * Introductory and intermediate studies need to be added for computer computer science theory.
 * Languages
 * Interpreted, Compiled, usage, history
 * Data Structures and Data Types
 * Arrays
 * Dynamically Linked Lists
 * Stacks
 * Queues
 * Trees
 * Records (Structures with more than one data type, ie a C struct)
 * Memory management ?stuff?
 * by reference passing
 * by value passing
 * Allocation and deallocation
 * garbage collectors
 * Abstraction and Encapsulation
 * Algorithms
 * Sorting
 * Searching
 * Traversal
 * Parsing (on a basic level)
 * Infix, Postfix, Prefix
 * Algorithm complexity analysis
 * n
 * n log n
 * n^2, n^3
 * etc...
 * This would need a prerequisite or corequesite of at least one introductory level language study. These are just off the top of my head.  At some point, language independent discussion of these concepts needs to happen.68.101.149.2 23:02, 6 September 2006 (UTC)
 * Yes, I agree DarkFighter 23:02, 7 September 2006 (UTC)
 * I missed this page completely and posted a suggestion for a fundamentals course on Topic talk:Computer Programming. This is pretty much the content/structure of the introductory course in computer science here at the ETH when I took it. The course there would cover the fundamentals of using a language (variables, control structures, structured data and arrays, pointers) with some basic techniques (recursion, dynamic programming). Topics souch as fundamental algorithms (searching, sorting, graphs, etc...), fundamental data structures (trees, heaps, lists, hashtables, etc...) and coplexity analysis sould be discussed in a separate course since they are not language-bound. The examples therein could/should however use the language learned in the first course. Just in case I missed something, is this being implemented or discussed somewhere else? Pedro.Gonnet 08:13, 11 October 2006 (UTC)
 * Yes, I agree DarkFighter 23:02, 7 September 2006 (UTC)
 * I missed this page completely and posted a suggestion for a fundamentals course on Topic talk:Computer Programming. This is pretty much the content/structure of the introductory course in computer science here at the ETH when I took it. The course there would cover the fundamentals of using a language (variables, control structures, structured data and arrays, pointers) with some basic techniques (recursion, dynamic programming). Topics souch as fundamental algorithms (searching, sorting, graphs, etc...), fundamental data structures (trees, heaps, lists, hashtables, etc...) and coplexity analysis sould be discussed in a separate course since they are not language-bound. The examples therein could/should however use the language learned in the first course. Just in case I missed something, is this being implemented or discussed somewhere else? Pedro.Gonnet 08:13, 11 October 2006 (UTC)

Languages: Let us stick with a compiler or language that is "free"
We ought to stick with a compiler or language that is available "free." There are many open source compilers out there that are easy enough to install or use. Perl is another possibility, although most existing teaching material is not geared for Perl. Still, the popularity and practical uses for Perl keep growing.

C++ and Java have been the standards for a while. Many universities are switching to Java, but that ship may have already sailed.

It is certainly good to learn several languages, but the languages for the first few classes ought to be the same (or similar) and the compiler (or interp.) must be free.

--Darrell Ulm 14:08, 8 September 2006 (UTC)


 * I think it probably depends what you're up to, as to what language you should be using. Introductory courses are probably best left to something traditional (e.g., C, C++, or Java).  I think it might be wise to break things up into what you're wanting to do.  If you're wanting to sketch out some pseudo code for the "class" or "book", Python might be the most usable language.  For assignments, we should probably leave it between C/C++ or Java. Mark Roberts 20:29, 8 September 2006 (UTC)


 * I would like to mention that introductory language should be easy to learn. I started with Pascal myself, and I think it's very good for learning programming. It has very clear syntax, all the common features of imperative languages, much more readable then C/C++. I think, we can use FreePascal as open-source variant. DarkFighter 21:06, 8 September 2006 (UTC)
 * Link provided: http://www.freepascal.org/ Mark Roberts 23:51, 8 September 2006 (UTC)


 * Well, Pascal is fairly easy to learn, its true. Its a good suggestion, and one I hadn't thought of.  However, I can't think of the last time I heard someone say they were using Pascal on a professional project.  Disclaimer: I've written my own pascal compiler for the IBM 360/370.  I've also written a pascal byte code compiler all the way to the virtual machine implementation.  Just so that you know I'm not just dismissing your suggestion!  The only reason I would suggest using C/C++ for intermediate class homework assignments is ubiquitousness and some modicum of it teaching what's going on under the hood so to speak. Mark Roberts 23:51, 8 September 2006 (UTC)
 * Yes, that's exactly what I think. Maybe, Pascal (btw, Delphi is still here, and used a lot) for first programming course. C/C++/Java will be main languages of choice. Also I would add more languages (fuctional language, x86 assembler, SQL, etc...) DarkFighter 02:07, 9 September 2006 (UTC)
 * We're working on them here: Topic:Computer Programming. I'm working on Assembly (and plan to move to C/C++ and Python shortly).  As it turns out, my Assembly is a bit rustier than I had initially thought, and is limited to IBM 360/370 anyway.  I'll have to learn some ARM/PPC Assembly just to flesh things out with practical application.


 * While I do love Pascal, it may not be useable in a commmercial setting, but so many languages come and go, they may not be used in the future either! C++ may be on the way out (perhaps on account of it's complexity of symantics) while Java and perhaps Perl are taking over. One nice thing about Pascal is it is universal to about any other language. A "Unix Systems Programming" course would need to teach a little course in 'C', or each language could just be a mini-course like colleges tend to do it. That way someone could build the FORTRAN pages, or COBOL, C++, JAVA, Perl, PHP, or whatever. Each of these could be a pre-req for the course they are needed. Web programming would use the Perl or PHP or JAVA for instance. I am OK with Pascal, as it is a good beginners language that is structured. Students can fight with all the special features of C++ for instance, like overloaded operators and virtual functions, that they end up re-inventing the wheel to print something on the screen as an object using the << operator. Pascal is fine. (yes, many of us who took "compiler design" programmed a pascal compiler!) It is a simple and effective language for teaching logic of algorithmic programming.--Darrell Ulm 23:27, 23 September 2006 (UTC)


 * I learnt how to program in Oberon and worked as a teaching assistant four years in a row teaching it, wrote a manual on it and organized two crash-courses. Ok, enough bluster ;) Oberon -- and Pascal -- are by far more humane than C, C++, Java, Perl or Python since they implement all the features you would expect in an imperative language... And nothing more. As for useability we fist have to ask ourselves what we are (or what we want to be) teaching our students: programming or computer science? If we just want to teach then programming then, sure, teach them C++ and Java. If we want to teach computer science then we'd better pick a language that shows the concepts we want to teach clearly, simply and without fluff. Pedro.Gonnet 08:02, 11 October 2006 (UTC)

Single introduction course?
I am inclined to merge "history of computers" to the beginning of "introduction to programming". A newbie in CS have to understand computer design model before he starts programming. That's important, so here is not walking in darkness

Yes... --Darrell Ulm 23:18, 23 September 2006 (UTC)

Working under "introduction to CS" course
I suggest not to start other courses before design, structure and style is finalized. Look at the new lessons! DarkFighter 04:58, 19 September 2006 (UTC)

Do you have a template? (which course) --Darrell Ulm 23:26, 23 September 2006 (UTC)

Game Design Learning Trail
We have a object oriented software engineering subtrail as part of a game design and production trail getting started. We are currently planning on open source java tools, components and open sourced graphics to the greatest extent possible. All are welcome! Consulting expertise and kibitzing is ok; if interested in these topics or helping others who are learning them. Mirwin 07:09, 7 November 2006 (UTC)

Assembly language not an "introductory" topic
Use of assembly language is neither mainstream nor required for higher progression in computer science. Today asm is something you'd only use as a systems junkie or as an electrical engineer. I am recommending that we remove the assembler unit for this reason. -Freeman 07:19, 16 December 2006 (UTC)


 * While I understand your reasoning, I think that some form of "at the bare metal" understanding is essential for computer science. It doesn't have to be in the 1st year course selection, but how computers actually function and ASM are something that is important. Historybuff 18:43, 12 January 2007 (UTC)


 * Agreement. We should offer a course introducing asm, just not in first year. Freeman 05:13, 23 January 2007 (UTC)

Intermediate / advanced courses and their descriptions
I'd really like to insert some basic course descriptions to the intermediate / advanced categories. I will fill these in with similar information as that is found in the University of British Columbia Course Calendar. I do not want our study guide to follow UBC's exactly, but for now it is better than nothing. There are too many entries that end in "etc.." Freeman 07:23, 16 December 2006 (UTC)


 * Where is the course description area? (link, if you have one?) I'm not sure what the nature of courses (structure, if they will be graded, etc), but I'm glad to try and help. Historybuff 18:45, 12 January 2007 (UTC)

integrated course (e.g. NAND to Tetris)
I wonder if it would be possible for Wikiversity to develop an integrated computing course, along the lines of Shimon Schocken's NAND to Tetris in 12 Steps. Some of their software is open-source, I think, so we could even use that. -- Kowey 09:49, 28 June 2008 (UTC)

math courses
It would be a good idea to add a class in formal logic: mathematical logic, besides that 'formal' also means things like formal languages. That would be a more advanced topic. I am not very involved in this topic here yet, but for the way the curriculum is now a logic class should be before part 3, which has an algorithms class, but logic probably needs to be before discrete math: that class says logic is a topic.--Dchmelik 04:55, 27 February 2009 (UTC)

Functional Language
I edited the Functional language page to redirect to Haskell. I created the Haskell page, but so far almost nothing has been added. Omniscient Prestidigitator 22:09, 11 May 2009 (UTC)

continue continue continue
MIT opencourseware is incomplete. Look at the icon table, then icons available by the left of each course at http://ocw.mit.edu/courses/

The other opencoursewares are incomplete. They call a course not a whole course like Computer Science, but a single course like Calculus 1. 10 Courses from Dixie State College of Utah http://www.ocwconsortium.org/courses/browsesource/browse/source/143 21 Courses from Fundação Getulio Vargas - FGV Online http://www.ocwconsortium.org/courses/browsesource/browse/source/1172 55 Courses from Hokkaido University - http://www.ocwconsortium.org/courses/browsesource/browse/source/111 etc

Free Technology Academy materials are incomplete. "The initial course programme of the FTA contains 8 course modules at master level of each 5 ECTS credits. As a complete Master Programme comprises at least 60 ECTS (depending on country and institution), the FTA currently offers only a part of that (note that the Study Programs for 2011 already contains 14 courses)." http://ftacademy.org/courses/recognition

Wikiversity is incomplete, Red links are pages that still have to be written at http://en.wikiversity.org/wiki/Computer_science_program

Read motivation from Edge Question Center. http://www.edge.org/q2009/q09_2.html#andersonc

Unifying with Computer Science Department
Hello, there has been a lot of development over at School:Computer_Science, I think it would be in everyone's best interests to unify the two pages together somehow. Azotochtli (discuss • contribs) 17:47, 24 February 2013 (UTC)