Further Your CS Development with Mac OS X
by Julie Starr08/13/2004
I've been involved with computer science and related education as a student, staff, and instructor for more than 13 years. In that time I've seen the emergence of more "casual" computer science students -- those who have chosen computer science and have rarely played or experimented with UNIX, do not feel especially comfortable at a command line, and sometimes do not appear to enjoy programming.
It's true -- contrary to popular belief, a computer science undergraduate education alone does not make you a programmer or software developer. You know what I'm referring to -- the assumption that a CS degree means you know something about software development.
While many fine developers have arisen out of the traditional computer science undergraduate curriculum, that's not always a result of the actual education. You would be surprised at the percentage of professors teaching computer science who do not program often. The fact of the matter is that computer science is a huge field and not all areas require regular use of programming skills. Programming assignments are an excuse to get students to learn about concepts by doing.
How Can You Get the Most Out of your Education?
Perhaps running Mac OS X as your sole computer system while in college offers a way to further your educational and professional development.
The marketplace likes its engineers to have some knowledge of popular operating systems used in corporate environments, most notably Windows. But to solely focus on that OS could hamper your progress. Let's face it -- Microsoft designed Windows to be easy to use for users and developers. Perhaps they went too far?
I'm always dumfounded while teaching to see that some seniors can't use the UNIX command line. It's not just that they haven't seen or used UNIX systems much. It's getting to the point where one never needs to open up the command line on Windows systems. Everything is point-and-click, sometimes without analogous command-line tools.
While this is admirable for typical end users, it's almost a detriment for inquiring students. The lack of exposure to a command line while on Windows systems makes the jump to UNIX systems even more difficult for some. This is a shame, since much more has been documented and (oftentimes more openly) developed for UNIX systems, making understanding of the core technology easier on UNIX than Windows systems.
If you're not comfortable on a command line, you just might be destined to a script-kiddie existence in which you will be at the mercy of others to develop neat, new technology with a GUI for you to accomplish tasks. This is perfectly acceptable for normal computer users, but it would be nice if our students studying computer science and related fields had a bit more expertise.
On one end of the spectrum, we have relative computer science neophytes versus insatiable curiosity seekers. Often, but not always, it is the former on Windows systems and the latter on UNIX systems. For almost two decades, students have been using UNIX or UNIX-like operating systems such as the Berkeley (BSD) variants or Linux to build and learn more about computer technology. There has also been the whole open source software (OSS) development movement of the past few years, where most projects originate on Linux or UNIX and are then ported to Windows. OSS development is fantastic for computer science students, since it gives them an outlet to hone their development and personal communication skills while testing and extending their understanding of systems.
|
Related Reading
Learning Unix for Mac OS X Panther |
OK, What About Linux Then?
Why not run Linux as your sole operating systems with the combination of VMware for x86 emulation, WINE, and homegrown OSS packages for productivity? While there are ways to get Office and other productivity software running on Linux, not everyone wants to make a huge production for every new application installed.
Linux is a great choice as a server, just not as the preferred desktop productivity environment -- at least not quite yet. For example, Open Office falls short of Microsoft Office -- which is a bargain at $149 for the Student and Teacher edition when you consider all the features provided.
Commercial software is not a bad thing. When you decide your time and level of productivity outweigh the cost of acquiring OSS or commercial software, you make the investment. There are students who will take the time needed to make their Linux installations productive environments. However, I'd wager the time needed to load and configure an equivalent amount of productivity tools on MAC OS X or Windows is less than on Linux. And the number of people willing to invest that extra time is much smaller than those willing to get a Mac or Windows system. Before you come up with ways to contradict me, raise your hand if you're using a Linux box as your sole productivity OS.
Wouldn't it be nice if there were a productive operating environment in between Windows and Linux that had the power of a UNIX system for computer science education and development, as well as an easy-to-use environment in which to get everyday work done? Isn't there a system out there with these characteristics that still offers an opportunity to develop a variety of marketable skills in the workplace come graduation?
Actually, there is. From what I've seen in the past few years, Mac OS X offers the best combination to satisfy your inner geek and get your day-to-day tasks out of the way. Sometimes you want to explore, other times you just want to avoid hassles and get your work done.
In my recent time at a research university, I've seen more and more notebooks sporting a glowing Apple logo gracing the desks of students and computer science faculty alike. It is no wonder so many faculty are switching -- OS X is the first UNIX variant to be truly usable as your sole workstation. It has many features UNIX geeks have grown to love in Solaris, Linux, NeXTStep, *BSD, and HP-UX, but with an interface advanced users can really use and enjoy every day. Computer science students should consider a Mac for the upcoming school year due to two issues: productivity and hackability.
Productivity
You have a finite amount of time in a 24-hour day. Daily life is about making constant tradeoffs of your time and money as you choose what you want to accomplish. How you make those decisions, based on your resources and your desires, determines your overall productivity. Time is still valuable for college students in terms of studying, having a part-time job, attending classes, doing independent development, or attending to other recreational pursuits.
To help get your day-to-day productivity tasks accomplished, there are many high-quality software packages available on OS X. While the number of commercial software titles available on Windows dwarfs OS X, remember to factor in quality not quantity.
Core productivity software is available for development (Xcode), email (Mail.app, Entourage, Eudora, Mulberry), web browser (Safari, Internet Explorer, Camino/Mozilla), office productivity (Microsoft Office, Appleworks), and digital media organization (the iLife suite, including iPhoto, iTunes). Some software, such as OmniGraffle (for diagramming and charting) and most of the iLife suite, are available only on the Mac. Many times when OS X versions of popular Windows applications have not been produced, such as Microsoft Access, equivalent if not better solutions fill the void, such as FileMaker Pro.
Aside from core productivity, X11 (a windowing system originated from MIT) is also available as part of Mac OS X. With X11 you get the output of 20+ years of other folks grinding out useful tools and applications -- commercial and otherwise. In case you need any other software, many packages available on other flavors of UNIX have been ported to OS X. There is even a project, Fink, to manage the process.
It's like getting the qualities of Linux and Windows you really want and need without dual booting. But it's even better because the integration and overall design of Mac OS X meld the best of both worlds.
Just in case you find an application you can't run natively on Mac OS X, there is the option of Virtual PC for OS X ($129, no Windows OS included). If your computer science department participates in the MSDN Academic Alliance, you may be able to obtain copies of Windows and select other Microsoft software to run in Virtual PC. This is a great solution if you have the odd Windows program you need to run, or want to put in your time to master Windows and be truly well rounded. Be forewarned, as typical of an emulator, you will want the fastest processor and amount of memory you can afford if you plan on using an x86 emulator frequently.
The final point to productivity goes to security. Mac OS X saves you some worry by being relatively secure out of the box. If you run the netstat command on a brand new OS X system, you will find just two open ports: TCP 631 for CUPS printing, and TCP 1033 for account management purposes. Both are for local use only; other computers on your network cannot connect to those ports by default.
While no computer on any network can be guaranteed secure, a large step to thwarting attacks is to close all avenues of entry, such as open ports. You should not run into instances of your newly installed system being hacked over the network before completion of system updates and patches. Less to worry about again translates into more productive time for you.
Hackability
I'm not talking about hacking in a malicious sense, but rather poking around a system to learn about it and create functionality. With its BSD heritage, OS X is not some newbie operating system. It is a mature, extensible one. On Mac OS X, you actually have two parts to the overall system: Aqua, helping define the Appleness to the OS graphical user experience, and Darwin, the core UNIX foundation the system is built on.
Apple made the unusual step of choosing an open source core, Darwin. Anyone can download Darwin; it has even been ported to x86. Apple releases its changes to Darwin to the community, fostering a collaborative environment. Once more, it's the best of commercial software and the open source movement working together.
When it's time to work on programming projects for school or personal curiosity, install the developer tools, gratis in OS X. GCC, Java, Perl, Python, Objective-C, and Ruby are all at your fingertips. About the only languages or compilers I can think of not included are Fortran and C#.
Once you're in the Terminal program for command-line access, you'll also find the familiar GNU tools, as would be found on most UNIX systems. There are even open source x86 emulators, such as BOCHS, if you want to spend time tweaking your own emulator instead of purchasing Virtual PC. Essentially, the visually stunning Aqua user interface doesn't prevent the inquisitive user from going to town customizing the system and developing tools just as Linux users do.
Final Thoughts
Because this article is running on O'Reilly's Mac DevCenter, I know that to some degree, I'm preaching to the choir. I'm sure there will be disagreements about particular points I've raised.
But the real issue here is this: In your world you are considered a computer expert. Therefore people come to you asking your advice about what hardware and software to use. I hope that some of the points I've raised in this article help you articulate why Mac OS X might be a good choice for serious CS students.
I've been a user of the Classic Mac OS, DOS, NeXTStep, Solaris, Windows, OpenBSD, Linux, and finally Mac OS X throughout the years. Mac OS X is the place I now call home. I think many others would be happy here too if they realized the benefits this platform provides.
Julie Starr , CISSP lives in Raleigh, NC, where she is a freelance writer, computer security instructor, and sometimes a computer science PhD student.
Return to MacDevCenter.com.
You must be logged in to the O'Reilly Network to post a talkback.
Showing messages 1 through 14 of 14.
-
Help a Comp Eng. Student out
2004-09-14 03:05:35 ll350 [Reply | View]
Can anyone point me to some web resources for using IDE's on Mac OS X? Particularly Using Xcode for newbies? I am a Computer Engineering Student at UNC-CH, taking my Foundations of Programing class. I tried using Xcode, but the Documentation that is available at Apple Developer Connection doesn't seem to have me in it's target audience. I'm currently using JBuilder Foundation, which is pretty good, except that they don't have any documentation or samples for the Mac version.
I was really hoping to use Xcode. Perhaps if I purchase the Student membership to ADC, I could get a some better doucmentation for Xcode? If someone could provide some insight in to that, I would really apprecitate it. I would be willing to purchase one if I knew it would help, but it would be a pretty big hit to my budget if it didn't. -
Help a Comp Eng. Student out
2004-12-01 12:02:16 metacell [Reply | View]
I seriously recommend this series (note: MacDevCenter!):
http://macdevcenter.com/pub/ct/37
But if you just want to write standard C/C++, you might just try running gcc from the mac terminal app.
You can still generate vanilla C/C++ programs from XCode, simply select 'Standard Tool' from the new projct window. Even if you don't want to learn the Mac APIs (Carbon or Cocoa), the series I linked is still a good introduction to the XCode environment.
-
General Comments
2004-08-25 13:14:13 Ming Chow |
[Reply | View]
* I agree with the general tone of your article.
* The purpose of going to college is not to learn a discipline and go out there to make a living out of it. College teaches you how to *think* and stand on your two feet when you face situations. I do not necessarily agree with learning a particular system like Windows, UNIX/Linux, Mac, or a particular language. However, I do have to say that Computer Science students need to learn and be exposed to a lot that is out there today: Windows, UNIX/Linux, Mac, C/C++, Java, Perl, etc. It may seem like a lot, but that is Computer Science. The goal is to learn how to think when you are in the situation of moving from one platform to another (whatever that may be). You need to be FLEXIBLE.
* Few people admit that it is necessary to learn the command line editor :-) I do have to say that the mouse is one of those inventions that actually make your life sometimes a little more difficult (sometimes an unproductive tool).
* It is hard to have Linux as your only operating system. Two words: desktop standardization.
-
XP and Cygwin == OS X
2004-08-18 21:34:36 dvputnam [Reply | View]
Consider Cygwin Tools for Windows. Simple to install on XP, Win2K, Win9X--and free--Cygwin (www.cygwin.com) provides Windows machines with a comprehensive selection of Unix tools, including X-Windows, bash, a Gnu compiler, Perl, Apache, sed, grep, emacs, vim, ssh, sshd, telnet, ftpd, etc. It's a good deal, and works great, too.
-
C# not the answer
2004-08-17 08:18:00 omnivector [Reply | View]
C# doesn't allow students to learn the interface aspects of programming without requiring windows. System.Windows.Forms is not ready for prime on any platform but windows. In an educational environment, it's important to allow diversity and freedom. The education should not be about the OS you use, but the concepts. By requiring a specific platform, you rule out that possibility.
Java on the other hand has swing, which is cross platform and effective. Not to mention that the computer science AP exam now uses java. with those two in mind, C# has no place in the education environment for universities in my opinion. maybe an elective course, and maybe in the IT department. It needs to stay out of computer science because CS focuses on how to use languages. In fact, most universities only teach a programming language in CS for the sake of keeping everyone on the same page when discussing concepts, and to give students the ability to prove what they've learned systematically. But besides that, the language used is totally agnostic.
-
Linux still an option
2004-08-17 06:40:22 chadseld [Reply | View]
I think you may have given up on Linux too easily. CS Students don't need a full productivity environment, they need a text editor and a compiler. I agree that Mac OS X is the ideal blend of UNIX and GUI (I did all of my undergrad work on a PowerBook), but it is not the only choice.
I like the way CSU (Colorado State University) runs its CS program. The CS computer labs are a mixture of (very old) SUN boxes and (very new) RedHat Linux boxes. Each student has a UNIX account and can log into any computer (or ssh from home). All assignments are to be submitted with a makefile and are expected to run on the Linux machines. As a student, you can choose to run your favorite OS at home, so long as you get your projects compiling and working on the Linux machines before you turn them in. This forces all students to interact with the CLI, but does not limit the use of IDE's during development.
Many students found it easiest to duel-boot Linux and Windows on their home PC's. Some used Macs. Everybody gained experience with and (hopefully) appreciation for the UNIX world.
-
C# on OS X
2004-08-16 19:51:26 J__ [Reply | View]
Hi,
Just thought I would share this with you: Although C# does not come with OS X, earlier this month MONO 1.0 was released. MONO is an open source project for C# development on the Winodws platform (why? <g>), OS X and Linux.
http://www.mono-project.com/about/index.html
and mac os can be found here:
http://www.mono-project.com/using/index.html#mac
hope that helps,
J
// -
C# on OS X
2004-08-20 14:45:02 Russell Miles |
[Reply | View]
You're absolutely right, Mono does give us a heads up on C# for OS X and there are some easy installers too just starting to get some recognition.
However, getting the GUI components to work (there's some instructions in the Mono developers notebook on this) is not simple OR platform independant as such since you seem to have to pick at source level whether you are using Windows.Forms or an alternative....
C# on OS X is just not there totally yet, but I'm sure the smart people working on Mono are well on their way to making that an erroneous statement.
However I'd also argue that the core lessons you are trying to get across to CS students would be of the 'Object Orientation' form, rather than focussing on one language/OS over another. I'd take a developer who knows OO and patterns and has a broad experience of their application in different languages any day over someone who was singularly in the Java or C# trench.
The 'why' is usually a much harder lesson than the 'how' - take it from someone who can easily write an article on how but has to put a ton of effort in to explain a why :)
-
Comments on the article.
2004-08-16 19:48:31 rdpintexas [Reply | View]
Remember this is coming from someone with a Breadth of computer systems experience who is mostly tied to Windows, x86 Linux and Solaris for work.
Pros:
- First rule of writing (well, presenting any idea) is knowing your audience, and you seem to know them in that regard. You target CS students and write to their interest.
- Good overall thesis: About 2 years ago I talked to a guy at RICE had a Mac who called OSX "Everything Linux should have been."
- Obviously you are knowledgeable and passionate about your topic and that is conveyed in your writing.
Constructive criticism:
- There are a lot of 'generalities' here. For example:
* "The marketplace likes its engineers to have some knowledge of popular operating systems used in corporate environments, most notably Windows. But to solely focus on that OS could hamper your progress." Yes, but then you tell me to just use OS X. :-)
* "I'm always dumfounded while teaching to see that some seniors can't use the UNIX command line." Why? How does this impact these seniors?
* "The lack of exposure to a command line while on Windows systems makes the jump to UNIX systems even more difficult for some." Again, I'd like to know more about these 'some' and why lack of commandline experience is so detrimental. It's not that I haven't met my share of folks who couldn't; I'd like to know the 'effect' of this.
You also tend to use single examples:
"Linux is a great choice as a server, just not as the preferred desktop productivity environment -- at least not quite yet. For example, Open Office falls short of Microsoft Office -- which is a bargain at $149 for the Student and Teacher edition when you consider all the features provided."
This is fine as one example. But I normally don't make decisions based on 'one example'. A Moving van carries more cargo than my Camry, but that one fact alone is not going to make me drive straight to the 18 wheeler dealership. I'd normally try to have at least three 'points' to make a case for action.
Likewise here:
"While the number of commercial software titles available on Windows dwarfs OS X, remember to factor in quality not quantity. "
Go on.... You stop there, and so I'm not necessarily convinced. Examples might include "Mac OSX includes a suite of the most commonly used apps, and has never crashed in my two years on it...".
Let me know if you have any questions/retorts. Of course this is meant constructively. It's not that I don't agree that GUIs (and even Command lines in many cases) tie the hands of the programmer. I do. I'd just like to see more of this in your arguments.
-
From our Linux Users
2004-08-16 15:47:32 jstarr [Reply | View]
When I asked for those Linux users, a few who raised their hands emailed me.
"I'd hardly call 'yum install openoffice.org' a huge ordeal, but then again, I had to raise my hand. :-) Although, I don't think you'll find anyone that'll argue your point that OO.org doesn't even come close to MS Office."
[A friend of mine points out yum only works on some Linux distros, though.]
Glad to know the install is easy. Alternatives are always a good thing.
-
Fortran and C#
2004-08-16 15:40:24 jstarr [Reply | View]
Numerous folks emailed me about Fortran and C# support. Since discussion is now open, if you've got good pointers for Fortran, feel free to reply to this comment.
The original point I was trying to make was not that you *couldn't* get Fortran, or even C#, to run on OS X. When did the lack of a prepackaged installer stop any of us UNIX folks from getting what we really wanted to work? I just meant that out of the box, or with Apple Developer Tools CD, Fortran and C# - to my knowledge - were not provided. Everything else (I listed) is. The easy availability serves longtime and newbie UNIX users well. -
Fortran and C#
2004-08-18 01:31:08 nzino [Reply | View]
It's true that out of the box, you can't compile Fortran on OSX.
Now, IBM provides a very efficient Fortran compiler in its "XL" compiler suite.
Besides, with darwinports (http://darwinports.opendarwin.org) or fink (http://fink.sf.net), it is a matter of a few keystrokes to have a g77 (gcc compiler for fortran) on your computer. -
Fortran and C#
2004-08-16 19:57:24 jstarr [Reply | View]
A reader pointed out that gcc usually includes g77 for Fortran. But the gcc man page on Panther says "...Apple does not currently support the compilation of Fortran, Ada, or Java, although there are third parties who have made these work..."
They suggest Gaurav Khanna 's Gaurav Khanna 's site if you're interested in running Fortran.





Most people here are talking about development. Let me add...my courses will use mostly java for programming. Between Netbeans, Eclipse, and Xcode ... I don't know which to use, maybe time will tell, but wish there was an answer.
Anybody had to upload firmware to AP's, routers, switches etc... all the time with OS X? Lack of legacy ports and, I believe, a lot of install utils for this type of equipment is W32.
Can anybody who does a lot of network equipment integration comment?
For me it might be a Dell soon...