Tom's Guide Forums
  Tom's Guide Forums » CPU & Components » CPUs » software engineering
 




Word :   Username :  
 
Bottom
Author
 Thread : software engineering
 
More Information

hey guys...i wanna get into software engineering as i am hoping to study it in college...wondering if you had any suggestions on books or tutorials that could help me get started. Also, i am seriously considering buying a macbook pro and using the parallels program to go on windows when i do this stuff. does anybody know if that works well or if another laptop could be a good choice for me. all your help is appreciated

Related Product

Register or log in to remove.

More Information

Quote :

hey guys...i wanna get into software engineering as i am hoping to study it in college...wondering if you had any suggestions on books or tutorials that could help me get started.



I learned how to code simply because I had to. Some of my classes required that I do some programming and I learned pretty much on-the-fly. I do have a manual, Deitel and Deitel's How To Program C, Fourth Edition. But once I got through the basics, the manual is a reference, as is the GNU website as I code on a Linux machine.

Quote :

Also, i am seriously considering buying a macbook pro and using the parallels program to go on windows when i do this stuff. does anybody know if that works well or if another laptop could be a good choice for me. all your help is appreciated



Why in the world would you want to buy a more-expensive MacBook Pro to just pay yet more money to buy a full copy of Windows to run it in emulator at reduced performance? If you want to program in Windows, get yourself a laptop that has Windows already installed. Save yourself a bunch of money.

But depending on what kind of programming you intend to do, you'll probably want to have access to some sort or UNIXy machine to do C and possibly no-GUI C++ and Java on. That is what the classes at my university did- the guys who ran Linux, BSD, Solaris, or MacOS X (with the GNU toolchain installed, it's not be default) could just program on their own computer rather than having to ssh into a server and deal with either SFTPing all of your files to the local directory on the server after every save or using a CLI text editor in the ssh session. Needless to say, many people at least dual-booted one of those OSes if they didn't run it outright and leave Windows behind.


---------------
UNIX is user-friendly- it's just picky who its friends are.

DRM is slowly killing personal computing, one Sony rootkit and TPM chip at a time.
More Information

I graduate with my degree in software engineering at the end of this month. Clap Clap Clap :) Anyways, hands down everything you need to learn can be learned online. No questions asked. I have about 30 reference books that I have collected over the years and I rarely touch them. The majority of them are poorly formatted for anyone who is just starting out. Especially considering the multitude of community forums out there.

I agree with MU_Engineer that there is no reasoning on getting a Macbook. I would 100% recommend a notebook running Windows native. As much as people liked to beat up on Microsoft Visual Studios (I am talking < 2003) it has proven to be just about the best IDE on the market. In addition its c++ compiler is just as accurate in regards to ANSII standards if not more as the GCC GNU compiler and it is hard to beat the backing of the power house know as Microsoft.

Very important to remember Software Engineering is by no means %100 percent coding. There is a lot of design theory and development approaches to be learned. Also, C++ is by in large the most commonly used language. To me learning C is almost to the point of being counterproductive. But that can be argued to high hell. :)

Regards

Chad

More Information

Ok, if you're going to get into an industry built on knowing how to program and knowing the internals of a computer, why would you buy the fischer price model? Apples are fantastic - if you surf the internet, write e-mail, and don't really know what a CPU is. If you play games, program, etc., you'll want a Windows based machine.

Yes, most colleges will probably run Unix, since colleges are typically ultra-liberal, hate big business (so Microsoft, in this case), plus Linux is cheap. However, guess how many businesses use Linux instead of Windows...ya. If you're learning c++/java/Oracle on a Linux system, but you're also learning .NET/SQL Server on your own or through classes as well on a Windows system, you'll be in high demand after school. If you limit yourself to the *nix world and you don't have a Windows based machine to at least play with, you'll find a lot of doors closed in your face.

Plus, it's college. Unless you're taking a nice TV with your 360 or Wii, you need that Windows system for games :-D


---------------
What goes in this box?
More Information

Get one with a widescreen display. And others have said, you'll likely want a Windows notebook. You won't do anything that you'll need OSX for in college. And most college's run Windows, not Linux. Professors might prefer Linux, but the university themselves will likely use Windows. I went to Florida Institute of Technology in Melbourne, FL (good, little known school) and they actually switched to Macs for the CS professors university machines (the IT guy was Pro-Mac and convinced them).

Many schools might teach you Java to learn Object Oriented programming. Java is good, but the job opportunities are far fewer so make sure you get a good background in C/C++. Learning .NET helps too but I doubt many software engineering programs are going to actually teach it. You shouldn't be learning it anyway when you start to program.

I graduated with a BS in Software Engineering in Dec. 2005. Now I do DOORS Database Administration for an Air Force contractor and write custom tools in DOORS' scripting language to make other people's jobs easier. Finding a niche like this is a good way to make sure you have a job in the future.

More Information

I have a masters in software engineering and I work for private money lender.
Know this well enough to do it in your sleep:
(OO) C++/Interfaces (not GUI type yet)/Templates (generics in C#), the full software development life cycle, verification and validation, CASE tools, Databases queries in the database environment and in the programming environment, multi-thread programming and delegates.

Then after you master all that, then you can specialize in .NET, Linux, etc. Get certifications (MCSD, etc). The schools don't teach anything like in the real world (I did everything in a UNIX Shell), so you need lots of experience anyway.

Also, FINISH a 4 year University - don't shoot yourself in the foot. Some good programmers didn't finish college, their potential is greatly reduced and they are probably paid less (since companies can get away with it).

Just get any Windows notebook is good enough since they all have a LAN, modem, USB, etc connections. Mac users typically need special applications for graphics or music.


Message edited by enewmen on 09-04-2007 at 07:21:18 PM
More Information

wolverinero79 wrote :

Ok, if you're going to get into an industry built on knowing how to program and knowing the internals of a computer, why would you buy the fischer price model? Apples are fantastic - if you surf the internet, write e-mail, and don't really know what a CPU is. If you play games, program, etc., you'll want a Windows based machine.

Yes, most colleges will probably run Unix, since colleges are typically ultra-liberal, hate big business (so Microsoft, in this case), plus Linux is cheap. However, guess how many businesses use Linux instead of Windows...ya. If you're learning c++/java/Oracle on a Linux system, but you're also learning .NET/SQL Server on your own or through classes as well on a Windows system, you'll be in high demand after school. If you limit yourself to the *nix world and you don't have a Windows based machine to at least play with, you'll find a lot of doors closed in your face.

Plus, it's college. Unless you're taking a nice TV with your 360 or Wii, you need that Windows system for games :-D


Ya, most colleges do run UNIX. But I think it has more to do with UNIX and UNIX apps change very slowly. It will be hard for professors to re-learn everything every few years, like with Microsoft programming. UNIX is also a VERY good multi-user OS. It was Multi-user, Multi-tasking, Multi-processing 20 years before Microsoft. I got lots of core-dumps programming C++ with dangling pointers, the UNIX terminal window didn't even blink. I also agree colleges hate Microsoft and other big business, but I don't call it ultra-liberal (Since UNIX and Universities was doing advanced work decades before Microsoft), so I call it conservative. Companies still use Microsoft and you have to know visual studio unless you work for some large defense company that avoids Microsoft. Also, like others said, don't expect a lot of games on the Mac.
Linux is used a lot in web-work. Around 50% of the worlds web servers are Lunix. So if you (software engineers) are doing web applications (not web-pages), learn Apache and IIS. You need to be good with databases anyway.

More Information

I think it's much easier to learn from resources online than out of a book. There are so many tutorials and sample code available online, using a search engine to navigate is much easier than thumbing through a book, and you can cut and paste code.

I'd start off learning C++ and programming from a UNIX-like command prompt, rather than some OS specific programming environment. This is probably where you'd start in school. Use g++ (GNU c++) as your compiler and a text editor such as emacs. You can run these from a command prompt on Linux or Mac, or by downloading Cygwin for windows. Start off by following the tutorials at a page like http://www.cprogramming.com/tutorial.html#c++tutorial

Then once you're comfortable with the basics of the language and of programming in general, start trying to make a real program. Do something that's fun or interesting to you. Things like object oriented design, modularity, verification and design, databases, etc. might be practical for a professional software developer, but are dreadfully boring. So don't worry about those types of things starting out, and just try to do something fun so you can keep motivated. Getting general experience programming, analytical thinking, and troubleshooting is most important thing.

Start off by taking sample code similar to what you want to do from online, then compile and run it. Then start trying to modify it or combine it with other sample code online. For example, if you are interested in making games, you could stay cross-platform and learn OpenGL from a site like http://nehe.gamedev.net/

More Information

moocow wrote :

I think it's much easier to learn from resources online than out of a book. There are so many tutorials and sample code available online, using a search engine to navigate is much easier than thumbing through a book, and you can cut and paste code.

I'd start off learning C++ and programming from a UNIX-like command prompt, rather than some OS specific programming environment. This is probably where you'd start in school. Use g++ (GNU c++) as your compiler and a text editor such as emacs. You can run these from a command prompt on Linux or Mac, or by downloading Cygwin for windows. Start off by following the tutorials at a page like http://www.cprogramming.com/tutorial.html#c++tutorial

Then once you're comfortable with the basics of the language and of programming in general, start trying to make a real program. Do something that's fun or interesting to you. Things like object oriented design, modularity, verification and design, databases, etc. might be practical for a professional software developer, but are dreadfully boring. So don't worry about those types of things starting out, and just try to do something fun so you can keep motivated. Getting general experience programming, analytical thinking, and troubleshooting is most important thing.

Start off by taking sample code similar to what you want to do from online, then compile and run it. Then start trying to modify it or combine it with other sample code online. For example, if you are interested in making games, you could stay cross-platform and learn OpenGL from a site like http://nehe.gamedev.net/




I agree with 100% percent about learning from online resources. What I have found school to be good for is it tells me what I don't know. Once I figure that out the internet has all the information that I need to fix that problem.

I regards to starting out on g++ from emacs. Ehhh....I am not sure if I agree. There really is no benfit to a new comer. To me it actually makes things harder because you don't have the assets avaiable in a good IDE. Espically something like Visual Studios and the debugging enviroment it offers. At one point < 2003 I would say yes because how much more strict g++ was then vc++ (s) compiler. But that is just not the truth anymore.



---------------
-GIGABYTE GA-P35-DS3P LGA 775 Intel P35 ATX Intel
-E685O (Zalman 9700)
-CORSAIR CMPSU-620HX
-P182
More Information

Quote :

Ya, most colleges do run UNIX. But I think it has more to do with UNIX and UNIX apps change very slowly.



I think that's more of an issue with large companies that used to run or still run a lot of big-iron servers, especially IBM units. The rest of the legacy stuff is Win32/DOS rather than UNIX.

Quote :

It will be hard for professors to re-learn everything every few years, like with Microsoft programming.



The GUI parts change frequently, but the non-GUI parts don't. You can use GCC just as easily as Microsoft's compilers to compile the code, and it's much cheaper to have a few Linux/BSD/Solaris machines around that are supported by the existing IT staff than to buy a bunch of MS licenses. This is much more of an issue in colleges where there isn't a university-wide all-of-our-products site license.

Quote :

UNIX is also a VERY good multi-user OS. It was Multi-user, Multi-tasking, Multi-processing 20 years before Microsoft. I got lots of core-dumps programming C++ with dangling pointers, the UNIX terminal window didn't even blink.



This is another reason that it's popular. I personally much prefer to work with UNIX-type systems due to the fact that they'll tell you much more of what's going on and handle crappy programming better than on Windows. I also have dealt with forgetting to free pointers and my Linux machine handles it waaaay better than the Windows machines.

Quote :

I also agree colleges hate Microsoft and other big business



I don't. My university and several others in the state that I know their position on *love* Microsoft and don't like the free UNIXes very much outside of the Web server and network traffic handling role. There are a handful of Linux machines around campus and one server that handles all of the CS SSH traffic as well as SAS/SPSS and file serving. Almost everything else is Windows- Exchange, IIS, etc. There are a fair number of Macintosh computers around, but most of those are x86 units that dual-boot Windows. They only exist because of the journalism school and for some reason the biology department is all Macintoshes.

Quote :

...but I don't call it ultra-liberal (Since UNIX and Universities was doing advanced work decades before Microsoft), so I call it conservative.



I would agree that universities that deploy mostly UNIX and UNIXy machines are conservative- financially conservative. MS licenses are not cheap and you always run the risk of getting audited by the BSA if some disgruntled employee wants "to get even." Even if you're 100% legit- and with thousands of computers, you'll likely have at least a few that aren't- it's still a pain in the butt and expensive in terms of lost productivity. You are also beholden to their license agreements and any increases in fees that they deem you should pay. The open-source UNIXes do away with almost all of that. There are also no fees to pay for antivirus subscriptions and the UNIX OSes are generally thought to be more reliable, reducing the number of IT staff that you have to pay to administer and fix the machines, but that's just icing on the cake. So I'd consider the liberal choice to choose to run more expensive software that has a much greater liability in running it, and that's MS, not the UNIXes.

Quote :

Companies still use Microsoft and you have to know visual studio unless you work for some large defense company that avoids Microsoft.



It depends on what you want to do. There are a lot of UNIX machines out there- mostly as servers- and *somebody* had to develop applications for them and administer them. Also, it's becoming increasingly common to encounter non-Windows machines being used in businesses for the reasons I outlined above, and again, somebody will need to develop for them. The bottom line is that it's good to know how to do work with several kinds of machines as it makes you more versatile and thus more attractive.

Quote :

Also, like others said, don't expect a lot of games on the Mac.



That's completely irrelevant to the argument about universities. I haven't seen any games on any computers owned by any university that are more complex than Solitaire or Pinball, so the argument is moot. This might be more important to a student, but if you want to game, consoles are less expensive in the long haul than computers.

Quote :

Linux is used a lot in web-work. Around 50% of the worlds web servers are Lunix. So if you (software engineers) are doing web applications (not web-pages), learn Apache and IIS. You need to be good with databases anyway.



Linux is also *the* HPC OS, as well as being extensively used for databases (especially large ones), file serving and e-mail. Windows servers tend to be used more frequently to run MS-only programs like Terminal Services or Exchange rather than the uses mentioned before, although IIS is used extensively for corporate intranet pages. Generally Windows servers will be used for file and Web serving if there is really only need for one server and you have to run Exchange or Terminal Services, so it's more of a "hey, we have this server already" kind of bit than a choice to use it. Of course there are exceptions, but this is what I've seen.


---------------
UNIX is user-friendly- it's just picky who its friends are.

DRM is slowly killing personal computing, one Sony rootkit and TPM chip at a time.
More Information

I'm in the same situation. I'm waiting for the MacBook (non-Pro) refresh, which should allow me to drop 4gb of memory and a nice 250gb hard-drive into the laptop without a problem. Also, slightly better intergrated video offering SM 3.0. (I'm not a gamer, I just want something for OpenGL or another library, if needed).

The build quality of MacBooks is much better than any laptop I've seen out there - LED backlighting, longest battery life on WiFi (802.11n), quiet, next to no failures for most people, and the magnetized power charger. Although Dell is significantly cheaper, the build quality of their laptops isn't as good.

Thirdly, I like how small and light the MacBook is. All I need is a small screen (12" ) with a decent resolution. No dedicated video or large (15"+) screens for me.

Why can't one just use Boot Camp with Vista/Linux?

More Information

These are great responses. The only thing I would add would be that in my experience, nothing has replaced classroom and books for learning the basic concepts of programming (conditionals, loops, etc) which then can be extended by using online resources to learn the actual syntax. I think it's important to use the text which has been well thought out to learn all the intricacies of these constructs before applying them to real programs. That's why I always tell people to start with something like qbasic to learn the basic structures, then they can use that as a jumping off point to C or perl or whatever.

I learned the basics when I was 8 or 9, writing basic on a commodore pet and commodore 128.

From there, it was easy to just learn syntax to create javascript, VB, php, perl, etc.

More Information