I've noticed a problem with this page and Wikiversity in general. There are too many placeholder pages. I'm calling for a vote to delete all pages that contain no information. For example, every single programming language that has zero lessons should be removed. There's no point in having courses that teach nothing. It looks very discouraging to visitors of this site when they see many blank pages.

Nevermind, I've found a better solution. I've split up the lists into Available and Planned. Planned courses are either placeholder pages or have links with pages yet to be created. Available pages are more than just stubs and have at least one lesson on them.

If a new section is added or other sections are heavily modified, or modified in a critical way, a news item should be added underneath Division News. That way people who visit the page can see some kind of growth. The last news item was from August 2006 and it's May 2007 which makes the page look kind of dead. Not a good thing.

How should XHTML be delt with? Should it be in the same "book" as HTML or completely different? A thing 05:47, 24 August 2006 (UTC)

Hmm, I've been thinking about that one for a while actually. Technically XHTML is the exact same language as HTML, except that it has stricter rules for "cleaner", more semantic code. I would think it could be in the "same book" as HTML, and just labelled as a "variant" of the language, or something to that affect. --Aepex 06:34, 24 August 2006 (UTC)

Since "real XHTML" (that is, XHTML that is served as application/xhtml+xml in the HTTP response headers instead of text/html) has the ability to combine XML tags from multiple namespaces and therefore expand the ability of HTML, I think that it deserves it's own lessons, but should still reference lessons on HTML and XML somewhere since it inherits so deeply from them... Senthryl 00:18, 29 August 2006 (UTC)

I don't think you should consider HTML or XHTML as a part of Computer Programming. They are markup languages, which is totally different thing from this topic. See http://www.w3.org/.

Perhaps a new sub-category should be opened under "Computer Programming" covering all Markup Languages and their respective capabilities and subsidiaries. Magus 19:26, 29 August 2006 (UTC)

I like the idea of collecting all markup language information under a 'Markup languages' category. But should makup languages be a subcategory of 'Computer programming' or on its own somewhere -- perhaps under an 'Information technology' or 'Technical writing' category? I don't think marking up a document with HTML, XHTML, LaTeX, or any XML vocabulary is really programming and markup languages are commonly used by non-programmers to create source documents that might eventually become anything from HTML to PS to PDF. However, XSLT is almost a fully-fedged functional programming language, so how about adding that as a subcategory of 'Computer programming'? Drew Hodge

Markup languages are not programming languages. We do not need to have them in one and only one place, but putting any markup languages under programming languages is not okay. We don't need to divide up into "books", either. There can be lots of materials and not just books. There can be materials concerned with HTML and some concerned with XHTML and some with both - fine! We should be using categories as well to express where things belong in different hierarchies. --WiseWoman 21:15, 18 September 2006 (UTC)

I personally agree in that XHTML is totally irrelevant for Computer Programming. There's an excellent web design course being developed here on wikiversity and I'm sure we can all work together but keep XHTML over there. --Draicone(talk) 22:51, 6 October 2006 (UTC)

Which version of the language does this refer do? Perhaps this category should be split into both Legacy and .NET versions of the language. Senthryl 22:50, 28 August 2006 (UTC)

The current lesson is for VB6, I'm planning to start one for VB.NET (Or VB2005 as it's refered to nowadays) Spacey 11:38, 29 August 2006 (UTC)

Since Microsoft is now giving away the "civilian" version of Visual Studio, I took the liberty of adding VB.Net 2005, VCS.Net 2005, and VC++.Net 2005 to the list of topics. I will add the stub pages later unless someone else does so sooner. Since VS 2003 languages have to be purchased, I think that it's a good idea to refer to the .NET platform as "2005", and create lessons based on those free versions. I also would like to write lessons for VB.NET 2005. Mr. Spacey, if you've already started, I'd like to help. Slick36 16:24, 24 November 2006 (UTC)

Has anyone thought of the possibility of a fundamentals course, taught using pseudocode, that introduces concepts like variables, boolean logic, loops, types, recursion, functions, and other core concepts? I think separating this from the learning of a specific language can reduce repetition, and result in a clearer, less language specific understanding. Yes, I am volunteering so long as others also think it has value.

I think it would work well; I'm currently working on the Assembly Language page, and would be available if you needed assistance. Mark-roberts 19:26, 7 September 2006 (UTC)

I have some experience as a teaching assistant for first-year Computer Science here at the ETH in Zurich, Switzerland. For many years we used the Oberon Programming Language designed by Niklaus Wirth. It had the advantage of a clear and simple syntax (no tricks) and that of the Oberon operating system which had an integrated compiler and removed the overhead of having to learn how to use an OS beforelearning how to program.

Oberon is probably not a great idea for an open university since it is a bit of a niche product. I would, however, suggest Pascal since it has many of the same features (simplicity and readability) yet, as opposed to Oberon, is widely available (GNU compiler available as well as many commercial alternatives).

I think a funamentals course is an excellent idea and would love to invest my time and effort into it! I have many exercises and complete lecture notes for Oberon which can be easliy "translated" to Pascal.

We should, however, agree on a language first. I vote for Oberon or Pascal. Pseudocode is not such a good idea since there is neither an accepted standard nor readily available compilers out there.

Well, that won't really work since not all fundamental concepts are possible in all languages. Consider recursion and structured data in BASIC, basic OO in C and call-by-reference of basic types in Java -- or any kind of non-OO programming in Java for that matter. I think we should first define what the fundamental concepts are and then use only languages that implement them all. Pedro.Gonnet 07:57, 10 October 2006 (UTC)

Just an afterthought... If we can't agree on a single language (which we probably won't), we could also just offer the course in different languages. What would be important in such a case is to clearly define the pre- and post-conditions, effectively establishing a syllabus. Any suggestions? Pedro.Gonnet 13:44, 6 October 2006 (UTC)

Well, I'm a bit bored, so here's my suggestion for the Syllabus for the coures "Fundamentals of Computer Programming" or just an extension to "Introduction to Programming":

Basic Programming Language Skills: the students understand and know how to use the following:

Concept of variables

Basic data types, structured data types and arrays

Concept of expressions, statements and syntax

Basic control structures such as loops, if-then-else statements

Concept of procedures

Concept of parameters, call by value vs. call by reference

Concept of functions and their return type

Basic Programming Skills: the students understand and know how to use the following:

I agree that a fundamentals course, to introduce some of the most important and commonly used concepts is an excellent idea. However, I don't think that such a course can go very far without concrete examples written in a language that users can actually run. This isn't to say that pseudocode isn't exceptionally useful. Algorithms can best be described in it as pseudocode can hide the minutiae of implementation until the student is ready to tackle them. Dmclean 08:58, 27 January 2007 (UTC)

I think a fundamentals course might work as an abstraction, but it is important to have another solid course that would be taken alongside it (co-requisite?) so that abstractions can be put into practice. The thing is they would require some co-ordination, because you would want the "language" course to follow with lessons/exercises that are based on the lessons in the abstract course.

Perhaps not a separate course, but exercises referenced by the course. If they were separate then we could do them in more than one programming language. Dmclean 02:19, 29 January 2007 (UTC)

I'm not sure we're there yet -- We really need more content in general, before separating out smaller topics or abstractions. Historybuff 16:46, 27 January 2007 (UTC)

Looking of Topic:Java it seems to be geared more towards students that have some familiarity with programming already. Would anyone have a problem with me starting a separate course that is geared as a companion course to Introduction to Programming. I would probably also do one for C++ and maybe Pascal. Dmclean 15:56, 2 February 2007 (UTC)

I'm wanting to get into programming PhP, there seems to be a number of good open access courses for intro to PhP and further. What I am looking for is a course on how to set up the development environment. Can anyone point me to such a course? -- Prawstho 17:19, 8 March 2008 (UTC)

Shouldn't courses be ordered in a practical from easiest to hardest instead of alphabetically? I mean, I see why the different programming languages are listed like that, but shouldn't there be, as Gabe said, lower level courses? DamienBlack 05:28, 16 September 2006 (UTC)

Well, sometimes its better to learn C rather than BASIC because of the sheer practicality of C. Luckily, C happens to be high up in the list because of its name, which isn't such a bad thing as long as we can get some content going for C. --Draicone(talk) 22:53, 6 October 2006 (UTC)

A lot of the 'courses' look more like individual lessons... I think this page will look far too cluttered if we keep this up. For example 'C++ Data Types' isn't a whole course, it is only one lesson that should be linked from a course that is something like 'Beginning C++'. Our courses should be broader. Imagine a young person or complete novice walking into this section, we want it to look clean, friendly and approachable. If we just had three lessons in C: Beginning C, Intermediate C, and Advanced C, it would feel much more approachable then the current list. Damien Black 05:44, 16 September 2006 (UTC)

I have some courses on XML and RelaxNG. These are in XML form, and I would like to convert to wikitext. Do you have any suggestions on ways to do this? Thanks, Tom Gaven

I've started to bring across some notes I've been putting on Novell Forge about the Microsoft MS 70-536 course .NET 2.0 Framework using mono. I've probably added these a bit in haste. The originals are at [1]. Would such a set of notes be appropriate in the Computer Programming Topic? --Jason.cozens 20:32, 8 November 2006 (UTC)

This section lists intro to programming > Java > C++. Personally, I feel we should make it intro to programming > C > C++ > Javascript, since once you learn C you can learn anything, and C, while being one of the most intricate languages, is by far the most detailed and one of the easiest to explain. Any comments? I'll change this in a week or so if nobody objects. --Draicone(talk) 23:07, 25 September 2006 (UTC)

Is there a simpler language that could be used as a root for all other languages, like BASIC?--Rayc 00:01, 26 September 2006 (UTC)

Well, BASIC isn't that simple when you think about it. I can code in C, C++, Java, PHP, Pascal and a number of other languages, yet I never want to learn BASIC. I tried it once and it was too hard. There are certain elements of BASIC that simply don't work and I'm not so sure we have enough BASIC coders to teach the language well anyway. --Draicone(talk) 22:54, 6 October 2006 (UTC)

If you're looking for the mother of all languages, it's not basic. Many features that were available in the 60s -- structured data, subroutines, recursion and dynamic memory to name a few -- are not part of BASIC. Just because something is primitive it doesn't mean it's older. Pedro.Gonnet 08:35, 7 October 2006 (UTC)

While there are religious wars about programming languages, C is not a good intro language for computers -- my personal feeling is that it shouldn't be introduced upfront. C can lead to a lot of sloppy code and bad habbits. I cut my programming teeth on (EEEK!!) BASIC, but it isn't an ideal language to start with either. (We should offer some basic courses, but they could be options/additional credit). Pascal is pretty decent really, but Java is also very good candidate too.

C is an essential skill -- don't get me wrong -- but for the price of power, you have a lot of danger, and that is hard sometimes for intro students to deal with. Historybuff 07:41, 15 January 2007 (UTC)

Any discussion of programming languages is almost certain to devolve into what Babylon 5 fans would recognize as a Green/Purple debate. We all have our opinions, sometimes based on irrational prejudices (for example, I have an intense dislike for country music because of a group of people that I knew that all listened to country music) and sometimes hinging upon small details that we find unpalatable. I think that we should consider a format that allows us to include equivalent examples from multiple different languages. I say this primarily because, even though I have a current favorite language, I am not naive enough to believe that the advent of something better is not impossible. I think that we should vehemently avoid parallel pages with the same content in different languages (duplication, not to mention synchronization issues). I do think that we should try to pick one or two languages as the preferred language(s) of the university and that every page with programming examples should include it/them. Dmclean 08:48, 27 January 2007 (UTC)

I respectfully disagree that there should be one or two preferred languages of the university. Although just about any language will produce the result you want, no one language can be considered "better" than all the rest. Each language has its benefits and its drawbacks, imposing one over the other defeats the purpose of teaching in my opinion. 209.8.233.10 19:46, 12 April 2007 (UTC)

After further consideration, I'm recanting my conclusions. Availability and interest of participants will drive the availability of course materials. Attempting to create or enforce anything like an actual policy would be worse than useless. Dmclean 15:55, 7 February 2007 (UTC)

This discussion may be settled, but I don't see a problem with having examples in multiple languages. Whoever authors the initial course content and examples can implement them in whatever language he or she wants. Other editors can then implement the same example in the language of their choice. For an example of this approach, see the printed text AI textbook by Russel and Norvig -- they have all of the examples in Java, Lisp, and Python. Mcuringa 01:43, 17 February 2007 (UTC)

I have a few recommendations to improve this section:

C is not an object oriented programming language. You can fake it, but it doesn't make sense to use C to teach OOP (or to suggest to students that it is an OO language). I suggest either removing C from the list of OOP languages, or change the requirement to any two programming languages, not just OO languages.

The web based languages requirement doesn't really make sense as it stands:

HTML is not a programming language

You can't do much with PHP if you don't know HTML, so maybe HTML should be a pre-req

SQL is not web based (although it is useful for web programming) -- maybe there should be a Dynamic Web Programming with SQL course as a later course in the SQL track

I would recommend HTML as a pre-req and then web programming with ASP, PHP, JSP, Ruby, or Python.

I think diversity is good, I think the Perl mantra of "doing it several ways" is bad, especially for people who are just learning a language. It would be better to have a template or language walk throughs, with some way to "see" examples in other languages.

I do agree on the C course being in the OOP section -- I think this is meant as a co-requisite for C++.

Programming in C is not a prerequisite for C++, nor does it belong in an OOP section. There will be some shared resources for the basics of language syntax, pre-processor, compile and linking steps but they are two separate languages and should be taught as such.AnjaKotobide 21:45, 21 May 2011 (UTC)

There are lots of spots where there are contradictions in the lesson outlines or course of studies. We should try to fix them where we can. I will take a peek, but feel free to either edit and post feedback or continue to discuss. Historybuff 05:29, 17 February 2007 (UTC)

Further comment -- pre reqs and co-reqs should be noted in the courses, I think ... the "course of study" should explain the core courses to achieve understanding in a topic area. Historybuff 05:33, 17 February 2007 (UTC)

I think we need to develop a standard template for each of the languages. From a look around I think the best idea is the "Introduction to programming" course, which requires a co-req of another language course. The best of these being the "Introduction to programming in Java". I think we should develop a set of "Introduction to programming in X" lessons where X is any sensible programming language. The recommended course of study would start with one of these then combined with the "Introduction to Programming". From there other languages can be explored. A sensible set of languages may be C, C++, Java, Java script for procedural languages. It may also be of benefit to have introduction to programming in a function language e.g. lisp. The more languages covered the better. Looking at it from a the lerners point of veiw, they would probably chose C, C++, or Java just because these are the languages they will of heard of before coming to start study. Simon alfie 13:02, 26 February 2007 (UTC)

Should the recommended course of study be designed so that a "graduate" of the course could be considered a competent programmer? Programming methodologies, workflow, design patterns, source control and test-automation are all skills that form part of a professional programmers role. These are cross-language core skills that should not be overlooked.AnjaKotobide 21:45, 21 May 2011 (UTC)

As I understood it the Topic: namespaces were for departments (like Computer Programming) not for individual learning programs (like Introduction to Computer Programming. I've put a question up about this on the namespaces talk page.--AdamG 20:07, 29 September 2006 (UTC)

Xlbnushk 06:26, 19 November 2006 (UTC) -- What about game map editing? Many games now offer users the ability to create their own maps or levels. I think this should go under computer programming. Any thoughts on the matter?

Certianly not programming. It doesn't involve code unless you're writing scripts. Once we reach that point, we can make programming courses for the scripting language used. - NickSentowski 20:29, 15 January 2007 (UTC)

I agree with Nick. Maybe a Topic:Game Design or something similar could coordinate the Game-related stuff we already have. Look at all these: search=gameCQ 08:43, 27 January 2007 (UTC)

I like the idea of a Topic:Game Design. Within this topic there could be subtopics for designing various genres of games (such as FPS, RPG, Platform, etc.) and perhaps a separate Topic for designing Mods for various games. One thing about game design, however is that it is not just limited to programming. Game design also encompasses graphic design, music and audio composition, physics, and a large amount of math and logic. If all these aspects were brought together, game design could possibly make up an entire School or Department. Subwayatrain 05:46, 4 October 2008 (UTC)

Maps, Mods, games scripts and levels could be added with a Game Development section, but have no place in a Computer Programming course. Games programming might, i.e. SPU optimisations on PS3 etc...

Visual Basic.net, AutoIt are both redlinks, and were in the recommended courses section. We should work on defining a basic criteria for recommended courses, but I don't believe they should be redlinks. There is some VB content development going on, so we should be able to modify this a bit and get back a bluelink. Comments/suggestions on any of this? Historybuff 14:34, 7 February 2007 (UTC)

I've started a new topic with learning projects for scripting MediaWiki (building bots and the like). I'm not sure what places would be good to have it linked though. If you have any general suggestions or comments or concrete ideas for what you like to see covered, please let me know. sebmol? 11:33, 23 February 2007 (UTC)

HTML really should not be under programming languages. It's a markup language not a programming language. As a rule of thumb if it can't do loops it's not a programming language. How about a new category for Mark up languages like HTML and XML?

I am not sure if this is of much use, or if it has come up before, but complete video lectures for MIT's Structure and Interpretation of Computer Programs are available under the CC-by-SA 1.0 here. The book which accompanies the course is available under a more restrictive CC-BY-NC 3.0 license here. I'm not sure how much, if any, use these materials would be to Wikiversity. --OldakQuill 15:45, 23 June 2008 (UTC)