need to learn some programming languages

kevinf2090

Senior member
Jul 23, 2005
684
0
76
I am currently a second year undergrad majoring in electrical engineering. I want to find some internships that i can go to during the summer but a lot of them require programming knowledge. the only language that i know is Java and i learned that in high school and haven't used it in college so i might be a bit rusty. some people have suggested me to start learning C#. what is the best book that i can use to self learn c#. is it easy to self learn C#? thanks
 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
C# is a memory-managed language for .Net development, it's Microsoft's attempt at a Java-like C++.

It's a good language for corporate development but it can't talk directly to hardware, it must connect to unmanaged Win32 code that's usually written in C/C++ or assembly.

I'm not an EE but I'd guess you'd get more mileage out of learning C instead.
 

esun

Platinum Member
Nov 12, 2001
2,214
0
0
Learn C/C++. It will be much more valuable as a EE. If you work on any hardware or embedded systems, you will be doing much more C/C++ or ASM than anything high-level (except maybe to make simple interfaces to your embedded system). Having some experience in a scripting language is useful for almost anyone, though, so I would recommend picking one of those up as well.

I should also mention that if you work in communications systems, then you will also be writing lots of MATLAB code so that can also be very useful to a EE.
 

Net

Golden Member
Aug 30, 2003
1,592
3
81
look at what language the majority of internship want

there should be some programming classes from the CS department that you can take as an elective. we had a large project (2000+ lines of code) C++ (advanced programming concepts in c++) that i was able to take. i would highly recommend it if you have something similar.
 
Last edited:

JasonCoder

Golden Member
Feb 23, 2005
1,893
1
81
It's a good language for corporate development but it can't talk directly to hardware, it must connect to unmanaged Win32 code that's usually written in C/C++ or assembly.

While this statement is true, you say it like it's a bad thing. If you want to hand roll a graphics API then by all means please use C/C++. If, like the majority of developers, you choose instead to spend what slim amount of budget/time you have on features and actual application code, you'll want to use an API provided by the OS or a 3rd party.

One can render a 3D scene with managed DirectX or XNA many light years faster than one could with C.
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
For an EE learn ASM then C .
The reason why is almost all hardware for EE work, ARM, Mips, Pic, 8051 , are based in ASM and C/C++ . These are not devices with large amounts of storage and often you have to fit the program code in 1MB of space or less. You also need direct control of the functions without anything else getting in the way.

With embedded devices it is like a pc with a usb stick with 1MB storage as the only way to run software. There is no OS on these devices 95% of the time ( no room) and your program is the only thing running . If you want to do something like multithreading it is often done with interrupts that you set up. There is no memory management, you have write that code or maybe there is a dev kit that helps with that if you are lucky. It is a blank slate with a bunch of registers. If you are lucky you have some libraries to do different functions and add support for interfaces and things like sensors. If not you have to write those too. If the platform has enough ram and storage then they usually run linux. So that is something else you can focus on if you don't know it already.

Put that you know ASM on a resume and you will get noticed by employers because they know if you know ASM then you know how the hardware works and not just how to write code and hope the compiler gets everything right.

If it were me I would start looking at ARM devices. ARM is upcoming and soon to be huge . Intel is said to possibly lost the net book market to them later this year. And the cost to get started learning it is really low. The cost to try it out is zero.

Get qemu that emulates the processor . And you can get started writing code for lots of embedded devices for free to see what you like best.
http://homepage3.nifty.com/takeda-toshiya/qemu/
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
While this statement is true, you say it like it's a bad thing. If you want to hand roll a graphics API then by all means please use C/C++. If, like the majority of developers, you choose instead to spend what slim amount of budget/time you have on features and actual application code, you'll want to use an API provided by the OS or a 3rd party.

One can render a 3D scene with managed DirectX or XNA many light years faster than one could with C.

I think Dave's point was that an EE is likely to want to talk to hardware.
 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
I think Dave's point was that an EE is likely to want to talk to hardware.

Exactly. I'm all for using libraries, frameworks and abstraction to make my life easier but drivers for hardware aren't normally going to be written in managed code.