System Programming (C)

theawddone

Member
Sep 1, 2006
55
0
0
I am about to take a System Programming class and I have no idea what to expect. I have been trying use google, to not much avail, so I'd like to hear from some of the members of this board that likely have some first-hand experience: what is system programming?

I haven't taken any programming classes for over a year, and the only programming I've really done is some VHDL/assembly for courses almost 6 months ago, and then some PHP/VB for work over summer. My freshman year I took 3 programming courses, intro to C, and then 2 java courses. I got a copy of "The C Programming Language" that I am trying to go over before the quarter begins, but I am not sure what exactly will be useful/important.

Any links/specific topics/personal experience/etc would be greatly appreciated.

Thanks

(my major in school is computer engineering, which is a blend of EE/CSC, so I am not required to take very many programming courses)
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
It's a good question. I never took a Systems Programming course, so my definition is just what I've absorbed over the years. System programming is the layer below application programming. Developing core libraries, utilities, perhaps drivers, and utilizing native OS APIs to get things done. Hard core data structures, pointers, optimization, memory management and constraints, interrupt handling, process lifecycle, etc.
 

mcmilljb

Platinum Member
May 17, 2005
2,144
2
81
MMMM... You are in for a treat! Your system programming class will consist of learning about how to interact with systems(in this case, through C). This is how I did it too. It's an interesting course actually. You will mostly learn about system calls and how use them. You will also spend a lot of time discussing the systems you're working on (We compiled code for Solaris and Linux to see the implementation differences). You might even look at some assembly code spit out from the compiler to see what happens to your C code(Our Solaris workstations were SPARCs so it was different from our Intel Linux workstations). Our project over the semester was building a UNIX/Linux shell. If you do that, you will appreciate all the readily available ones. Here is your bible for the course.

Tips for doing well:
Keep your code clean and organized.
Lots of comments. (You can't always remember what/why hours/days ago.)
Understand Pointers and other basics very well. (Saves you time and headaches.)
 

theawddone

Member
Sep 1, 2006
55
0
0
Originally posted by: mcmilljb
MMMM... You are in for a treat! Your system programming class will consist of learning about how to interact with systems(in this case, through C). This is how I did it too. It's an interesting course actually. You will mostly learn about system calls and how use them. You will also spend a lot of time discussing the systems you're working on (We compiled code for Solaris and Linux to see the implementation differences). You might even look at some assembly code spit out from the compiler to see what happens to your C code(Our Solaris workstations were SPARCs so it was different from our Intel Linux workstations). Our project over the semester was building a UNIX/Linux shell. If you do that, you will appreciate all the readily available ones. Here is your bible for the course.

Tips for doing well:
Keep your code clean and organized.
Lots of comments. (You can't always remember what/why hours/days ago.)
Understand Pointers and other basics very well. (Saves you time and headaches.)

This is exactly the answer I was looking for - thank you very much! I have heard horror stories of the length of the projects for this class, so it's great to have any pointers (har har ;))
 

Crusty

Lifer
Sep 30, 2001
12,684
2
81
Originally posted by: theawddone
Originally posted by: mcmilljb
MMMM... You are in for a treat! Your system programming class will consist of learning about how to interact with systems(in this case, through C). This is how I did it too. It's an interesting course actually. You will mostly learn about system calls and how use them. You will also spend a lot of time discussing the systems you're working on (We compiled code for Solaris and Linux to see the implementation differences). You might even look at some assembly code spit out from the compiler to see what happens to your C code(Our Solaris workstations were SPARCs so it was different from our Intel Linux workstations). Our project over the semester was building a UNIX/Linux shell. If you do that, you will appreciate all the readily available ones. Here is your bible for the course.

Tips for doing well:
Keep your code clean and organized.
Lots of comments. (You can't always remember what/why hours/days ago.)
Understand Pointers and other basics very well. (Saves you time and headaches.)

This is exactly the answer I was looking for - thank you very much! I have heard horror stories of the length of the projects for this class, so it's great to have any pointers (har har ;))

People who complain about programming and still do it are in the wrong industry :p
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
Originally posted by: theawddone
This is exactly the answer I was looking for - thank you very much! I have heard horror stories of the length of the projects for this class, so it's great to have any pointers (har har ;))

Pointers? Sure...
0x44f3a640
0x6188b062 <--- (char*)
0x03ffbcd4

(Shameless hijacking from XKCD, but I could not resist)