Page 1 of 2 [ 31 posts ]  Go to page 1, 2  Next

Plywood
Deinonychus
Deinonychus

User avatar

Joined: 7 Jun 2010
Age: 32
Gender: Male
Posts: 318

20 Oct 2010, 4:55 pm

Hello, I plan on doing something with computers in the future due to the fact that I can learn really well with them.

However I do not know what I should take up.
Can I get some links on lessons or little projects to practice computer skills. Either it be typing (even though I am good) or programming or just something to improve my knowledge of computers.



Orwell
Veteran
Veteran

User avatar

Joined: 8 Aug 2007
Age: 34
Gender: Male
Posts: 12,518
Location: Room 101

20 Oct 2010, 5:35 pm

Do you have any programming background yet? If not, I'd suggest starting with Python. Either the WikiBooks tutorial or "Dive into Python" (available either in print or on the web) is a good place to start.


_________________
WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH


Gruntre
Yellow-bellied Woodpecker
Yellow-bellied Woodpecker

User avatar

Joined: 8 Oct 2010
Age: 52
Gender: Male
Posts: 64
Location: Melbourne, Australia.

20 Oct 2010, 7:00 pm

If you are at School or University (I don't know your age) you can get an academic license for most top end computer programs including all the new AutoCAD programs: http://students.autodesk.com/ as well as heaps of high end Microsoft: https://www.dreamspark.com/default.aspx. What area you want to be in? Learn AutoCAD and you'll never be unemployed, lets put it that way. And you can get 3 year free licenses so you don't need to worry about subscriptions till you're well and truly established employment wise. I do Landscape design on CAD: I work from home, get up when I want and get paid well for it. And I don't get any coworkers freeloading or bullying me :-)
If you move into 3D the world really does open up to you: rendering, tv & film work, high-end advertising product work in Automotive etc. And they send you the raw files and you can work from home (if you work on a contract basis which you most likely will).
Programing I don't know (I do rudimentary Lisp) so I'll let someone else tell you bout that. Have a look at the Microsoft Dreamspark site, there's lots of web development & Visual studio software. Download and play, follow tutorials, google problems/solutions, sniff around for work, get on the chatboards, get google alerts for contract jobs within the area of your interest.
Have fun :-)



ruveyn
Veteran
Veteran

User avatar

Joined: 21 Sep 2008
Age: 87
Gender: Male
Posts: 31,502
Location: New Jersey

20 Oct 2010, 8:07 pm

A good warming up exercise in programing is to write some sort of program to do sorting or searching. That will require you to exercise most of the techniques. Such programs are heavy in logic which is to say complex testing and branching. They are also an opportunity to write clean user interfaces and to structure the programs efficiently.

ruveyn



theWanderer
Veteran
Veteran

User avatar

Joined: 12 Oct 2010
Age: 64
Gender: Male
Posts: 996

20 Oct 2010, 8:49 pm

Check out DonationCoder. I don't have the link right to hand, but if you google that, you should find them with no trouble. You can discuss all sorts of computer issues; they have lessons to learn different programming languages at your own speed, all sorts of stuff.


_________________
AQ Test = 44 Aspie Quiz = 169 Aspie 33 NT EQ / SQ-R = Extreme Systematising
===================
Not all those who wander are lost.
===================
In the country of the blind, the one eyed man - would be diagnosed with a psychological disorder


LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

21 Oct 2010, 8:31 pm

I had the same issue as you. I couldn't decide what area of computing to go into, so now I'm learning programming, web development, Unix/Linux, hardware, networking, computer graphics, 3D animation, database management, and system administration. I don't want to leave anything out.


_________________
I don't want a good life. I want an interesting one.


NewShinyCD
Blue Jay
Blue Jay

User avatar

Joined: 8 Oct 2010
Age: 35
Gender: Male
Posts: 78
Location: North Georgia

22 Oct 2010, 8:43 am

Python is awful as a first time language because of syntax.
I find C# much easier to learn and to build things with. Plus, you can always jump into Java or C++ later on because C# is basically those to combined together.

http://www.w3schools.com/ is an awesome website. They have tutorials for ASP, AJAX, HTML, XML, PHP, ADO, SQL, etc.

If your going into networking or help desk, etc. type stuff there are certificates. CCENT/CCNA for Cisco networks. There are the Microsoft certs like MCITP, MCTS, MCPD. I'm currently studying for the Microsoft 70-680 and 70-685 which is for MCITP Windows 7 Desktop Support Technician. 70-686 will make me an Enterprise Desktop Admin for Windows 7.
CompTIA used to be a good entry point for people wanting to get into the computer field, but they are switching their A+, Networking+ and Security+ certs from a lifetime certification to a three year certification. So I don't think it will have much weight come next year when it switches.

As for learning computers in general, I would just tinker around with them. See if you can find an old computer from about 3-5 years ago and take it apart. Or build your own new computer. Buy some cheap computers and setup a network in your house.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

22 Oct 2010, 10:27 am

NewShinyCD wrote:
Python is awful as a first time language because of syntax.
I find C# much easier to learn and to build things with. Plus, you can always jump into Java or C++ later on because C# is basically those to combined together.


I strongly disagree with this. C# is a good first language to learn, provided you plan on writing bloated GUI applications and being entirely dependent on predefined frameworks for the rest of your programming career. Not only does it not teach proper programming techniques, it enforces a dependence on object-oriented programming, which for many applications is totally unneccessary. All it does is teach you how to use premade gadgets and gizmos, never mind how they actually work or how they are actually implemented. How can you learn how to implement dynamic memory management in C#? Or how to create linked lists and parse trees? How to optimize different sorting algorithms? How to implement complex recursions and concurrency? It doesn't teach you any of that, because it does everything for you, regardless of whether another method would be more efficient.

You should read this article on Java. It applies to C# as well:
http://www.stsc.hill.af.mil/CrossTalk/2 ... nberg.html

Learning a language like C will teach you how to program. Learning C# will only teach you C#.

But if you really insist on learning C# as your first language, I strongly suggest you use the Mono framework. It's an open-source implementation of .NET that works on all platforms. It comes with its own IDE called MonoDevelop.

http://www.mono-project.com/Main_Page

Also, concerning W3Schools, I have found it useful as an introduction to a language, just to get a basic idea of its structure and how everything works, but it won't teach you anything in depth. You can't just read a W3Schools tutorial on PHP and expect to be able to write a Web 2.0 site when you finish. To really learn something complex requires time and effort, more time and effort than you would spend simply reading a 12 page internet tutorial. I would suggest first visiting W3Schools and trying some stuff out, then reading a book on the subject. O'Reilly books are probably the best way to learn something.

http://oreilly.com/


_________________
I don't want a good life. I want an interesting one.


Last edited by LordoftheMonkeys on 22 Oct 2010, 10:31 pm, edited 2 times in total.

LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

22 Oct 2010, 10:11 pm

NewShinyCD wrote:
CompTIA used to be a good entry point for people wanting to get into the computer field, but they are switching their A+, Networking+ and Security+ certs from a lifetime certification to a three year certification. So I don't think it will have much weight come next year when it switches.


Wrong. People entering the IT field will still be required to take CompTIA tests, and the certifications are good for three years. The fact that you have to take the exams again does not mean that the certifications are trivial. Not only is CompTIA still the best way to get into IT, it's also the only way (for most professions).


_________________
I don't want a good life. I want an interesting one.


mcg
Veteran
Veteran

User avatar

Joined: 26 Jan 2010
Age: 34
Gender: Male
Posts: 538
Location: Sacramento

23 Oct 2010, 11:46 am

LordoftheMonkeys wrote:
I strongly disagree with this. C# is a good first language to learn, provided you plan on writing bloated GUI applications and being entirely dependent on predefined frameworks for the rest of your programming career. Not only does it not teach proper programming techniques,

Do you really have to repeat this nonsense in every thread? What's an example of a "programming technique" that you can learn in C but not C#? You can even do pointer arithmetic in C#.

LordoftheMonkeys wrote:
it enforces a dependence on object-oriented programming, which for many applications is totally unneccessary.

No it doesn't, using OOP is completely optional (but you should still learn it eventually, OP).

LordoftheMonkeys wrote:
All it does is teach you how to use premade gadgets and gizmos, never mind how they actually work or how they are actually implemented. How can you learn how to implement dynamic memory management in C#? Or how to create linked lists and parse trees? How to optimize different sorting algorithms? How to implement complex recursions and concurrency? It doesn't teach you any of that, because it does everything for you, regardless of whether another method would be more efficient.

You should read this article on Java. It applies to C# as well:
http://www.stsc.hill.af.mil/CrossTalk/2 ... nberg.html

Learning a language like C will teach you how to program. Learning C# will only teach you C#.
Complete nonsense. Even in languages without explicit pointers like Java and type-safe C# you can still learn data structures, algorithms, recursion, concurrency, and more.


That being said, if the OP is really trying to learn programming I would recommend reading SICP (http://www.amazon.com/Structure-Interpretation-Computer-Programs-Engineering/dp/0262011530/ref=sr_1_1?ie=UTF8&qid=1287851617&sr=8-1) and working through the exercises. It's in scheme which sees little use outside of Academia but it teaches you CS concepts and a way of thinking that will help you throughout your programming career. This is the CS 101 book at the best computer science schools in the country (and check out the amazon reviews, too). Nothing I can write here can really do it justice.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

23 Oct 2010, 2:42 pm

The kernels for Windows as well as Linux and other *nix's are written mostly in C/C++, as well as Assembly language. You know why no one has written an operating system in Java or C#? Because they aren't as powerful.

Also, my point was not that you can't use pointers, data structures, etc. in C#, it was that you never and up needing to, because that's all done for you by a library or framework, so you never really learn how to program without using predefined tools and widgets. It forces a much greater dependence on code that someone else wrote. With C, you build everything from the ground up, which means not only do you learn better, but programs written in C are smaller and potentially more efficient. The lower-level you program, the better the end result is.

MenuetOS is written in Assembly language, and the entire OS can fit on a 1.44 MB floppy disk.


_________________
I don't want a good life. I want an interesting one.


mcg
Veteran
Veteran

User avatar

Joined: 26 Jan 2010
Age: 34
Gender: Male
Posts: 538
Location: Sacramento

23 Oct 2010, 4:20 pm

LordoftheMonkeys wrote:
The kernels for Windows as well as Linux and other *nix's are written mostly in C/C++, as well as Assembly language. You know why no one has written an operating system in Java or C#? Because they aren't as powerful.
People have written operating systems in both C# and Java.

In particular, Microsoft Research's Singularity OS (http://research.microsoft.com/en-us/projects/singularity/) has a kernel written in C#. By taking advantage of C#'s type safety, this operating system can enforce memory protection extremely cheaply in software. This allows them to avoid the huge overhead associated with switching between virtual address spaces on current hardware like the 386 (this overhead is why Windows and linux currently both do things like dedicate a portion of the virtual address space to the kernel--otherwise they would have to switch between address spaces twice for every system call).

LordoftheMonkeys wrote:
Also, my point was not that you can't use pointers, data structures, etc. in C#, it was that you never and up needing to, because that's all done for you by a library or framework, so you never really learn how to program without using predefined tools and widgets. It forces a much greater dependence on code that someone else wrote. With C, you build everything from the ground up, which means not only do you learn better, but programs written in C are smaller and potentially more efficient. The lower-level you program, the better the end result is.
"Better" is highly subjective. C code takes longer to write (even if you are making extensive use of other people's libraries), longer to debug, and is more likely to leak memory or have security problems then C# code. What language you should use depends largely on your application and preferences.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

23 Oct 2010, 4:41 pm

mcg wrote:
In particular, Microsoft Research's Singularity OS (http://research.microsoft.com/en-us/projects/singularity/) has a kernel written in C#. By taking advantage of C#'s type safety, this operating system can enforce memory protection extremely cheaply in software. This allows them to avoid the huge overhead associated with switching between virtual address spaces on current hardware like the 386 (this overhead is why Windows and linux currently both do things like dedicate a portion of the virtual address space to the kernel--otherwise they would have to switch between address spaces twice for every system call).


You can theoretically do anything with a language as long as it's Turing-complete. sed has been used to emulate a Turing machine, and it has also been used for complex mathematical calculations, despite being designed solely for text processing. As long as a tool isn't utterly crippling, you can make it do what you want provided you have the skills to do a tremendous amount of manipulation.

Maybe I should have said "No one has written a practical operating system with C# or Java."

mcg wrote:
"Better" is highly subjective. C code takes longer to write (even if you are making extensive use of other people's libraries), longer to debug, and is more likely to leak memory or have security problems then C# code. What language you should use depends largely on your application and preferences.


The application here is to learn programming, and learning programming requires an understanding of how computer algorithms and data structures are implemented, not just the ability to use a framework.

C and C++ are used more than any other language for mainstream software development. C++ is used more for proprietary programs like Adobe Photoshop and Autodesk Maya. C is used more for independent open-source projects like Apache and MySQL. There's a reason for this.


_________________
I don't want a good life. I want an interesting one.


mcg
Veteran
Veteran

User avatar

Joined: 26 Jan 2010
Age: 34
Gender: Male
Posts: 538
Location: Sacramento

23 Oct 2010, 5:27 pm

LordoftheMonkeys wrote:
mcg wrote:
In particular, Microsoft Research's Singularity OS (http://research.microsoft.com/en-us/projects/singularity/) has a kernel written in C#. By taking advantage of C#'s type safety, this operating system can enforce memory protection extremely cheaply in software. This allows them to avoid the huge overhead associated with switching between virtual address spaces on current hardware like the 386 (this overhead is why Windows and linux currently both do things like dedicate a portion of the virtual address space to the kernel--otherwise they would have to switch between address spaces twice for every system call).


You can theoretically do anything with a language as long as it's Turing-complete.

No, the software-based memory protection I described above could only be done with a type-safe language like C# or Java.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

23 Oct 2010, 5:41 pm

mcg wrote:
No, the software-based memory protection I described above could only be done with a type-safe language like C# or Java.


When C# code is compiled, it becomes machine code. It follows that you can do anything you can do in C# with machine code, and thus with Assembly language as well. Almost everything that can be done in Assembly can be done in C, because C is just one step above it. Java is basically the same as C#, so the same applies. As for the specifics of software-based memory protection, I can't comment on that because I don't know what it is you're referring to.


_________________
I don't want a good life. I want an interesting one.


LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

23 Oct 2010, 6:03 pm

From the Wikipedia article on Singularity:

Wikipedia wrote:
The lowest-level x86 interrupt dispatch code is written in assembly language and C. Once this code has done its job, it invokes the kernel, whose runtime and garbage collector are written in Sing# (an extended version of Spec#, itself an extension of C#) and runs in unsafe mode. The hardware abstraction layer is written in C++ and runs in safe mode. There is also some C code to handle debugging.


So C, C++, and Assembly are used along with C#.


_________________
I don't want a good life. I want an interesting one.