LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   university courses (https://www.linuxquestions.org/questions/programming-9/university-courses-812524/)

shadow771 06-06-2010 02:13 PM

university courses
 
Hello,

I always wanted to learn how to program mainly for creating dynamic Websites and Linux system administration and i might give desktop (GUI) apps a try when i am confident.

I searched a lot about how to learn about programming most threads in ubuntuforums talk about learning with python as a first language and i really like the language, but i really didn't want to learn a specific language i wanted to know about the whole process, so i decided to take one of these courses and i really don't know which is suitable for someone like me.

MIT 6.00 is an into to CS and they use python as the course's language but the assignments are really hard i can tell by looking at them :O

Stanford have an amazing series CS106A/B CS107 but the start with java and i heard that java is a complex language for a newbie.

Harvard's CS50 teach their first CS course in C and PHP and Javasciprt the course is really good and its the most up-to-date ( they renew the files every year) but its very intensive, time consuming one...


i really can't choose its a tough situation all of them are all good courses, please help me out here.

Thanks in advance.

H_TeXMeX_H 06-06-2010 03:01 PM

I would take the Harvard's CS50, definitely.

Python is a good choice too, it's easy and it teaches you the concepts you will need for any language.

Java is useless, don't learn it if you can help it. But, you probably will learn it anyway, whether you want to or not.

fruttenboel 06-06-2010 03:15 PM

Quote:

Originally Posted by shadow771 (Post 3994578)
Hello,

I always wanted to learn how to program mainly for creating dynamic Websites and Linux system administration and i might give desktop (GUI) apps a try when i am confident.

Try to find a copy of 'programming in Modula-2' by Prof Wirth. This one is real cheap: <http://www.amazon.de/gp/offer-listin...condition=used

Modula-2 is very structured and easy to learn. If you're a good programmer in Modula-2, you can become a good C or Python programmer too. The reverse is not certain... C is a portable assembler. Not an easy choice to start out with.

The book I mention is more an introduction to Modula-2, but it contains theory and examples.

Later, check the sources at
http://fruttenboel.verhoeven272.nl/mocka/index.html
http://fruttenboel.verhoeven272.nl/modula-2/index.html
http://fruttenboel.verhoeven272.nl/Java/index.html
http://fruttenboel.verhoeven272.nl/asm/index.html
http://fruttenboel.verhoeven272.nl/m4m/index.html

And http://fruttenboel.verhoeven272.nl/Prog/index.html of course.

Free books about programming:
http://www-old.oberon.ethz.ch/WirthPubl/CBEAll.pdf
http://www-old.oberon.ethz.ch/WirthP...ogInOberon.pdf
http://members.home.nl/jmr272/Oberon/AD.pdf
http://www-old.oberon.ethz.ch/WirthP...InOberonWR.pdf
http://spivey.oriel.ox.ac.uk/mike/obc/
http://members.home.nl/jmr272/Oberon/Oberon2.Report.pdf
http://www.mathematik.uni-ulm.de/obe...port-1992.html

shadow771 06-06-2010 05:01 PM

@H_TeXMeX_H

Thanks for the response, CS50 is great and i was going for it if no one answered me.

@fruttenboel

by looking at this http://www.modula2.org/tutor/chapter3.php Modula-2 is very similar to C like languages but i don't see the point why learn it, if i have access to a full Harvard course (a VM with a pre-configured GCC + psets + handout + video lectures).

plus, i would like to take the chance and report that all the mocka complier links you got on your website are ( Forbidden/dead ).

anyway, i really appreciate your reply and thank you.

EDIT: i found out that the GNU guys are have a compiler but its "still in development"...
http://www.nongnu.org/gm2/

salasi 06-06-2010 05:19 PM

Quote:

Originally Posted by shadow771 (Post 3994578)
I always wanted to learn how to program mainly for creating dynamic Websites

...for dynamic websites, you probably want things like PHP, javascript (no relation), maybe python and java...but maybe you'd be better off learning a CMS rather than a language, per se. Oh, and obviously HTML and CSS. And, if you decide to go down the CMS route, that might push whatever is used in your CMS of choice up the list of priorities.

Quote:

and Linux system administration
...bash (or other shell), python, perl...ruby?

Quote:

and i might give desktop (GUI) apps a try
...c++, python, perl, c and, of course, some graphics toolkit

Quote:

I searched a lot about how to learn about programming most threads in ubuntuforums talk about learning with python as a first language and i really like the language,
Python is a good choice for a first language, as you can actually achieve stuff without getting too involved with nitty, gritty details and still learn. OTOH, Python isn't the best solution for everything, but nothing is.

Quote:

but i really didn't want to learn a specific language i wanted to know about the whole process, so i decided to take one of these courses and i really don't know which is suitable for someone like me.
My objection to Java isn't the language itself, these days. You see far too many examples of brain-dead programming in Java and it is apparent that you can learn Java without learning basic principles. I'm sure that you can do this in any language if you try, but Java programmers seem to be more susceptible to it.

I'm sure that it is possible to write decent programs in Java, it is just a shame that this option isn't more frequently exercised.

Quote:

i really can't choose its a tough situation all of them are all good courses, please help me out here.
To achieve your aims, you will end up learning more than one of the above. I think that you'll just have to get used to this idea.

Sergei Steshenko 06-06-2010 05:46 PM

Quote:

Originally Posted by shadow771 (Post 3994719)
by looking at this http://www.modula2.org/tutor/chapter3.php Modula-2 is very similar to C like languages but i don't see the point why learn it
...

It's the strangest statement about programming languages similarity I've ever heard. Modula-2 is a good language, and it's "light years" away from "C".

shadow771 06-06-2010 07:40 PM

@salasi

hello salasi, first of all thanks for your detailed reply.

on the CMS issue i really want to program websites and understand the front and back end processes if i am not wrong a cms like Drupal is point and click and make things easier and i am not looking for that...

Quote:

To achieve your aims, you will end up learning more than one of the above. I think that you'll just have to get used to this idea.
yes, i am aware of that CS50 will be just a first step, then i will take CS106B (C++ abstraction) then CS107.

i know there is no magical way to know everything in a short time... these courses will just be an eye opener to me.

@Sergei Steshenko

Quote:

It's the strangest statement about programming languages similarity I've ever heard. Modula-2 is a good language, and it's "light years" away from "C".
Sorry i am a newbie trying to learn :)

KohlInGA 06-07-2010 01:01 PM

Your timing is perfect! Just came across this, this morning: Free Software University

John VV 06-07-2010 01:44 PM

there is also the Stanford free ones
http://see.stanford.edu/SEE/Courses.aspx
http://see.stanford.edu/see/about.aspx

bigearsbilly 06-07-2010 02:15 PM

Quote:

Originally Posted by salasi (Post 3994736)


My objection to Java isn't the language itself, these days. You see far too many examples of brain-dead programming in Java and it is apparent that you can learn Java without learning basic principles. I'm sure that you can do this in any language if you try, but Java programmers seem to be more susceptible to it.

that's because it's what they teach at universities. universities churn out programmers.
most of whom will be doing it to get into 'I.T.', will have plagiarised most of their coursework,
will never have the knack, taught by lecturers who rarely read, let alone test
coursework code.
Then they leave college and start as a developer, as that's the first step to
get into project management.

cynical, moi? ;)

H_TeXMeX_H 06-07-2010 03:37 PM

Quote:

Originally Posted by salasi (Post 3994736)
My objection to Java isn't the language itself, these days. You see far too many examples of brain-dead programming in Java and it is apparent that you can learn Java without learning basic principles. I'm sure that you can do this in any language if you try, but Java programmers seem to be more susceptible to it.

I'm sure that it is possible to write decent programs in Java, it is just a shame that this option isn't more frequently exercised.

You're right, that's a good point. Of course, there's plenty more to criticize about it.

Here's my summary of the problem with java:
Programmers lose out, not only because they do not learn how to program by using java, but also because java as a language is not gonna help you get anywhere or get a job. Most companies ask if you know C/C++ or for web programming PHP, Perl, Javascript. Where does java fit in ? It doesn't, it's a fat, ugly, evil, bastard child that should never have been conceived, but it's too late, his daddy is a big wig and will make sure he gets noticed. The whole industry looses out, because you have these programmers fresh out of school, and they can't program worth a ****, nor make a useful program that people will use. I swear, every time I've downloaded a java program doing anything, hoping that it will work and will work well, I end up deleting it in less than 5 min. It's that bad. But, they keep pushing it, into every school, onto every programmer, everywhere. Well go ahead, but when everything goes to hell, know the cause.

shadow771 06-07-2010 04:59 PM

okay i will walk the C/C++ path for desktop apps and network programming.

php/perl, javascript, (x)HTML/CSS (markup) for web dev.

bash/python/perl for sys admin.

lisp/scheme is a plus for the programmer right??

and of course i am not going to touch java unless i really have to..

Thanks for the responds everyone, i will mark this as SOLVED but please feel free to add more :)

Sergei Steshenko 06-07-2010 07:04 PM

Quote:

Originally Posted by shadow771 (Post 3995854)
...
lisp/scheme is a plus for the programmer right??
...

And their more modern soul friends OCaml and Haskell.

fruttenboel 06-07-2010 07:14 PM

Quote:

Originally Posted by shadow771 (Post 3994719)
@fruttenboel

by looking at this http://www.modula2.org/tutor/chapter3.php Modula-2 is very similar to C like languages but i don't see the point why learn it, if i have access to a full Harvard course (a VM with a pre-configured GCC + psets + handout + video lectures).

Suppose you want to become pilot of a space shuttle. Of course you can start out as a 4 year old studying the controls. Still,many people at age 4 will learn to ride a bicycle. At 18 they will learn motorvehicles. Later perhaps a plane. And then a rocket.
Why should you not start ouit with a language that teaches you the LOGIC and Contrl structures of a programming language? Many european universities teach Modula-2 in first year and then later (when the students know what programming is) give the opportunity to switch to a more dangerous language.

Quote:

plus, i would like to take the chance and report that all the mocka complier links you got on your website are ( Forbidden/dead ).
All of them? In that case your government is protecting you against yourself by blocking content. Some of the links listed in the Oberon section are dead (oberon2005.ru seems gone, just like some pages formerly hosted in the private webspace of Prof Wirth). I just checked the majority of links and they all run.

Quote:

EDIT: i found out that the GNU guys are have a compiler but its "still in development"...
http://www.nongnu.org/gm2/
The Gnu M2 project sucks. You need one specific backdated version of gcc to get M2 working. The compiler is slower than BASIC on a Z80 machine. It's complete and utter crap. It's a shame to the name.

Sergei Steshenko 06-07-2010 07:19 PM

Quote:

Originally Posted by fruttenboel (Post 3995956)
...Many european universities teach Modula-2 in first year and then later (when the students know what programming is) give the opportunity to switch to a more dangerous language.
...

Wise. By the way, IIRC, Modula-2 System module is dangerous - intentionally and by design - which makes Modula-2 a universal language, i.e. one can also program hardware in it.

And beginners are simply forbidden to use the module.

fruttenboel 06-07-2010 07:28 PM

Quote:

Originally Posted by shadow771 (Post 3994719)
plus, i would like to take the chance and report that all the mocka complier links you got on your website are ( Forbidden/dead ).

anyway, i really appreciate your reply and thank you.

Free University Berlin has rearranged their website again. Silly germans.

Here is the http://lwb.mi.fu-berlin.de/inf/mocka/installation.shtml link to the page where and how to install mocka. Since this page is in german I guess you cannot read it. So here is the link to the compiler: ftp://ftp.mi.fu-berlin.de/lwb/pakete/mocka.tgz

Get it, then follow the instructions in http://fruttenboel.verhoeven272.nl/mocka/setup.html

Modula-2 is OOP-ing without constantly having to say 'oops!' :D

Full windowing operating systems were written with Modula-2 when MicroSchoft was still stomping out DOS 4 textmode programs.

fruttenboel 06-07-2010 07:49 PM

Quote:

Originally Posted by Sergei Steshenko (Post 3995959)
Wise. By the way, IIRC, Modula-2 System module is dangerous - intentionally and by design - which makes Modula-2 a universal language, i.e. one can also program hardware in it.

And beginners are simply forbidden to use the module.

you won't even need SYSTEM for that. If, on a DOS style machine, you define a byte as a bitset you can manipulate individual bits in memory. Fast screen writes were usually done by having a big array at the address of the VGA screen buffer.

On Linux systems, the SYSTEM module is not dangerous at all. You will need root privileges for special things.

In general, Modula-2 is safe because it

won't let you do pointer arithmetic
won't allow math with different TYPE's
is VERY picky about procedures that return something
has no (real) goto / label construct
has definite END clauses for each IF
wants to be a MINIMAL system, whereas C, Java, C++ etc strive to be complete
implements code hiding and reuse
allows overloading in a SAFE way
does not require complex MAKE files

among many other things. Furthermoe, the compiler is there to help you, not to fight you.

A warning from my side:

IF youKnowModula2 = TRUE THEN
LearningJava := Troublesome ()
ELSE
LearningJava := Problematic ()
END

Java is more TYPEsafe than the other C-ish languages. But it suffers from the same amount of onamentation. Zillions of libraries just to be compelte for all persons in all places on all planets.

For GUI-ish programs I try to make a mix of Tcl/Tk front ends, which float on top of Modula-2 compiled executables.

shadow771 06-07-2010 07:59 PM

OMG!!
 
@Sergei Steshenko

ops, i forgot to mention haskel, thanks its on my list now.

@fruttenboel

wow i just wrote a big wall of text (used proxy and called isp and ....)

bad me didn't click refresh :P


thanks i will download and install it following your instructions, but what if i needed a little help on the learning process? may i contact you on jan AT verhoeven272 DOT nl? or you got an msn?

Edit: found this but the book is "incomplete"
http://freepages.modula2.org/report4/modula-2.html

also, the book is in german O.o that can be a problem...
http://www.amazon.co.uk/Programming-...5963981&sr=8-3

Thanks again :)

Sergei Steshenko 06-07-2010 09:02 PM

Quote:

Originally Posted by fruttenboel (Post 3995984)
...
On Linux systems, the SYSTEM module is not dangerous at all. You will need root privileges for special things.
...

I meant using SYSTEM module is to the same extent dangerous as using pointers, even more specifically, void *, in "C".

Sergei Steshenko 06-07-2010 09:02 PM

Quote:

Originally Posted by fruttenboel (Post 3995971)
...
Full windowing operating systems were written with Modula-2 when MicroSchoft was still stomping out DOS 4 textmode programs.

Yep.

fruttenboel 06-10-2010 03:39 AM

Quote:

Originally Posted by shadow771 (Post 3995987)
@Sergei Steshenko

ops, i forgot to mention haskel, thanks its on my list now.

@fruttenboel

thanks i will download and install it following your instructions, but what if i needed a little help on the learning process? may i contact you on jan AT verhoeven272 DOT nl? or you got an msn?

Of course.

Quote:

Edit: found this but the book is "incomplete"
http://freepages.modula2.org/report4/modula-2.html

also, the book is in german O.o that can be a problem...
http://www.amazon.co.uk/Programming-...5963981&sr=8-3

Thanks again :)
You will find a lot of small sources on my mocka pages.

I still have a copy of "Modula-2 a complete guide". You can have it for the shipping charges.

shadow771 06-10-2010 07:32 AM

@fruttenboel

Thanks a lot :)

the Author wrote this ... "Modula-2: A Complete Guide is both a comprehensive Modula-2 reference and a text for learning Modula-2. The only background required of the reader is experience writing programs in a structured, high-level language such as Pascal, PL/l, Ada, or C."

i only know C ( Data Types, loops, conditions, statements) i don't really know if i can handle the text without previous programming experience, but i will send you a private message about the shipping address/money transfer...

Thanks again :)

shadow771 06-10-2010 03:35 PM

Hi again,

the mocka compiler is acting strange ....

Code:

root@delllaptop:/usr/local/mocka/lib# ./machen
Mocka 0608m
>> .. Compiling Implementation of BasicIO I/0008 II/0008
.. Compiling Implementation of Storage I/0005 II/0005
.. Compiling Implementation of ByteIO I/0018 II/0018
.. Compiling Implementation of RealConv I/0013 II/0013
.. Compiling Implementation of TextIO I/0027 II/0027
.. Compiling Definition of Signals
.. Compiling Implementation of Signals I/0001 II/0001
.. Compiling Implementation of MemPools I/0004 II/0004
.. Compiling Implementation of Clock I/0004 II/0004
.. Compiling Program Module tst I/0001 II/0001
.. Linking tst
>>
./machen: line 26: mockabin/tst: No such file or directory

Code:

root@delllaptop:/usr/local/mocka/lib# ./makemockabin
./makemockabin: 12: m2: not found
./makemockabin: 12: m2: not found
./makemockabin: 12: m2: not found
./makemockabin: 12: m2: not found
./makemockabin: 12: m2: not found
./makemockabin: 14: m2: not found
./makemockabin: 22: m2: not found
./makemockabin: 24: tst: not found
root@delllaptop:/usr/local/mocka/lib#

and here is my /etc/profile


Code:

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
        . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

#i also pasted the export line here but nothing changed.
umask 022

export MOCKA=/usr/local/mocka

Thanks in advance.

shadow771 06-10-2010 05:49 PM

partially solved.... ubuntu sets environment variables in /etc/environment not /etc/profile

but i still get this:

Code:


root@delllaptop:/usr/local/mocka/lib# ./machen
Mocka 0608m
>> .. Compiling Implementation of BasicIO I/0008 II/0008
.. Compiling Implementation of Storage I/0005 II/0005
.. Compiling Implementation of ByteIO I/0018 II/0018
.. Compiling Implementation of RealConv I/0013 II/0013
.. Compiling Implementation of TextIO I/0027 II/0027
.. Compiling Definition of Signals
.. Compiling Implementation of Signals I/0001 II/0001
.. Compiling Implementation of MemPools I/0004 II/0004
.. Compiling Implementation of Clock I/0004 II/0004
.. Compiling Program Module tst I/0001 II/0001
.. Linking tst
>>
./machen: line 26: mockabin/tst: No such file or directory

and this:

Code:

root@delllaptop:/usr/local/mocka/lib# ./makemockabin
Mocka 0608m
>> .. Compiling Implementation of BasicIO I/0008 II/0008
.. Compiling Implementation of Storage I/0005 II/0005
.. Compiling Implementation of ByteIO I/0018 II/0018
.. Compiling Implementation of RealConv I/0013 II/0013
.. Compiling Implementation of TextIO I/0027 II/0027
.. Compiling Definition of Signals
.. Compiling Implementation of Signals I/0001 II/0001
.. Compiling Implementation of MemPools I/0004 II/0004
.. Compiling Implementation of Clock I/0004 II/0004
.. Compiling Program Module tst I/0001 II/0001
.. Linking tst
>>
./makemockabin: 24: tst: not found

Thanks in advance.

shadow771 06-10-2010 07:45 PM

solved :


Code:

>> nano hello.mod
>> p hello
.. Linking hello
>> ls 
hello  hello.mod  m2bin
>> ./hello   
hey LQ this is modula-2 mocka compiler running
>>


fruttenboel 06-13-2010 04:21 PM

Quote:

Originally Posted by shadow771 (Post 3999602)
solved :


Code:

>> nano hello.mod
>> p hello
.. Linking hello
>> ls 
hello  hello.mod  m2bin
>> ./hello   
hey LQ this is modula-2 mocka compiler running
>>


Well done!


All times are GMT -5. The time now is 08:32 PM.