Stanford Offers Cocoa Class 91
An anonymous reader writes "Back in the early 90's Stanford University offered a class on Objective-C for students interested in writing applications for NeXTSTEP. After a long hiatus it appears that class will be offered again as CS193E, 'Object-oriented User Interface Programming.' It will be covering the Apple development tools, Objective-C, Foundation and AppKit, and Quartz. Any other schools out there planning or already offering Objective-C courses?"
textbooks? (Score:3, Interesting)
what's the difference from C++ (Score:2)
What other changes are there? E.g. is there garbage colletion, is there refernce only calling.
why would a C++ programmer want to program in objective C or vica versa?
Re:what's the difference from C++ (Score:5, Informative)
Through introspection, an object, or a class object (loosely, that's a static class instance for static methods of your class), can interrogate themselves for variable names and types as well as the functions they support.
Only with object introspection can you send message (aka, method calls) to objects who may or may not understand (aka, implement), said message.
With this, i've created a really nifty (and open source) SQLite-based object persistence library called Objective-SQL [mac.com].
Basically, you just derive a class from my Objective-SQL classes and they can automatically instantiate themselves from SQL table rows through various Find* methods I've implemented in there. Simply change data member values and call [myObject commit] and voila.
Also, there is relational capabilities given a Category to the system NSString class that allows you to turn an object into a string reference, and this string reference back into an object automatically fetched from the SQL database.
One could derive the SQLTransport and redirect actual storage and retrieval to other SQL solutions, like PostGre, MySQL, oracle etc.
Re:what's the difference from C++ (Score:4, Informative)
Re:what's the difference from C++ (Score:2)
http://developer.apple.com/documentation/WebObj
Re:what's the difference from C++ (Score:3, Informative)
Objective-SQL also contains a SQLWebForm class whose purpose it to show SQL object data into template pages to yield final html pages.
Re:what's the difference from C++ (Score:5, Informative)
In C++, everything is statically typed, and performance is a primary goal. Objective C has more overhead, but is much more dynamic. Some cool Objective-C features (note: in Objective-C parlance, "message passing" is basically method invocation):
- Very weak typing. If you want to, you can just pass around all your objects as variables of the built-in type "id", and this allows you to send any message to any object without casting, and of course to build container classes that hold any object. If you want some more typing help from the compiler, you can use typed pointer variables to reference objects, in which case it'll warn you about passing messages that the class doesn't implement.
- Message forwarding. I've always loved this feature in languages that have it. Makes it so easy to create delegating objects -- you can implement a single "catch-all" type method that allows you to forward any unsupported messages someone passes to your object on to another object.
- Categories/mix-ins. Add functionality to existing classes without having to extend them. The functionality is automatically given to all instances of the class the program creates.
- Sending messages to nil (null). Rather than throwing an exception when you try to send a message to a nil reference, Objective-C just returns nil back. Sounds weird, but this actually saves a lot of nil checks in practice.
- Introspection, which others have mentioned. Facilities to figure out what messages an object or type can respond to, to create new instances given the type name, to send messages based on the method name, etc.
- Methods as first-class objects. You can elegantly pass around method pointers, and the Cocoa frameworks take advantage of this for GUI callbacks and such. If you're familiar with C# and Java, Objective-C is similar to to C# in this respect, and I much prefer these sorts of method callbacks to Java's system of creating (usually anonymous) listener classes.
There are a lot of other advanced late-binding things you can do in Objective C too. I have some complains with the language (it's a little too verbose for my tastes, for one), but overall it seems like a great language for building dynamic systems and GUIs.
Comment removed (Score:5, Informative)
Re:I'm glad you asked.. (Score:1)
Whatever happened to kdyke?
Re: (Score:3, Informative)
Re:textbooks? (Score:1, Interesting)
More likely they'll just have the instructor create specific handouts. That was how things were done when I was there... It is cheaper and a lot of times the handouts are better resources for the students as they also serve as notes for the lectures.
Others? Yes! (Score:1, Funny)
Strange (Score:5, Insightful)
Re:Strange (Score:5, Funny)
Or rather, the 10 minutes it takes to get used to the syntax is too grand to the lazy programmer.
Re:Strange (Score:5, Interesting)
I don't know... C++ has some strange syntax and greater-than/less-than usage, especially when you get to using templates.
Obj-C didn't take off because NeXT didn't take off. The only reason Obj-C is still being talked about is that Apple inherited it for the once and future Mac OS.
The markes selects AGAINST elegance (Score:3, Interesting)
Comment removed (Score:5, Interesting)
Re:Strange (Score:2, Interesting)
A lot of other companies didn't use it, what I understand, because they couldn't access it.
What a shame...
Re:gay linux fanboys love the frosty pisshole! FP (Score:2)
This is Stanford, so I'm guessing they will
Re:gay linux fanboys love the frosty pisshole! FP (Score:1)
The've had a Win32 based class in this series for years as well as Internet programming, Java, Advanced Java, Lisp, and a few others. This is just a logical next step (bad pun intended).
Why? (Score:2, Troll)
Would it not be better to teach the students HOW to program well, and let them implement the concepts in the language of their choice? Perhaps doing a "Language of your choice, but you can't use the same language twice" kinda thing.
They would learn OOP, learn how to learn another language, and perhaps actually understand how an algorithm works instead of coping it from the text book in the language that the book goes over.
Re:Why? (Score:5, Insightful)
There is. It's called the rest of the CS program at the school. They teach OOP-concepts, algorithms, etc.
This class is more specific. And optional. No one is forced to take it. And Cocoa isn't a language, its a set of API's. It just happens to use Objective-C. With macs being such a minority in schools, I don't see why its a problem to have an optional (probably student-run) class to each people how to develop for the mac.
Re:Why? (Score:5, Funny)
You are right, but have you tried putting that on a resume?
That's the unfortunate fact of life graduates will have to cope with, so every school must cater to the Real World as well, to some degree.Re:Why? (Score:5, Informative)
Stanford has offered classes in
Re:Why? Don't Know (Score:1)
Wouldn't it be better to focus (as an elective course) on cross-platform development like Java [sun.com], which can run on Mac [apple.com]?
Re:Why? Don't Know (Score:3, Informative)
No, because Java on a Mac runs slowly like you wouldn't believe. Objective-C is faster and, honestly, is no harder than Java.
Apart from the memory management.
Dave
Re:Why? Don't Know (Score:1)
Slow Java (Score:1)
Re:Slow Java (Score:2, Interesting)
IIRC, pure number crunching Java benchmarks actually give good results (considering the hardware) compared to other platforms.
Re:Why? Don't Know (Score:4, Funny)
Re:Why? Don't Know (Score:2)
GUI toolkits like Swing and even the infamously "native" SWT perform slowly, but the actual JVM on a Mac supposedly performs on average better than the windows JVM.
Nota bene, this is only what I have heard, and have no evidence.
you want 193J (Score:3, Informative)
As a Stanford CS graduate... (Score:5, Informative)
The Stanford CS courses required for graduation are much more theory based than the 193 series. Even without the 193 series (which many students completely ignore), Stanford CS majors learn to program well. The 106 series is considered a model of how to teach students to program. Business Week even did a large article on it a few years ago. Oh, and we get an algorithms course or two as well.
Re:Why? (Score:2)
real-world implementors traded off between
different desirable goals.
When theory meets reality, both of them change.
IIRC, John Lions wrote a little about this in the
intro to his _Commentary On Sixth Edition UNIX_.
Berkeley teaches Cocoa courses (Score:5, Informative)
Personally, I think its a great idea. Many, many students get out of CS schools with vague notions of how to write a compiler in LISP, or what the best way to implement XYZ (without understanding why it SHOULD be implemented). As if anyone cares. Macs may be a small market, but a Cocoa class is teaching a useful, marketable skill that can be directly applied to real-world application development.
Original headline (Score:5, Funny)
Re:Original headline (Score:2)
Re:Original headline (Score:4, Funny)
+(id)stanford
{
return [[[self alloc] init] autorelease];
}
Then you can just call:
[Stanford stanford]
Re:Original headline (Score:2)
Re:Original headline (Score:1)
You have to be in the right zone to take these courses.
[[self allocWithZone:[[NSApplication sharedApplication] zone]] init];
Re:Original headline (Score:3, Funny)
Re:Original headline (Score:2)
NSStanford *s = [[NSStanford alloc] init];
This course is going to be online. (Score:2, Interesting)
I wonder if my expired stanford.edu account will let me in to view the courses?
University of Yo Yo Dyne (Score:2, Funny)
CMU (Score:1, Interesting)
course website (Score:5, Informative)
Since it already has a "Under construction...", the professor's assistant is probably already busy preparing the page.
Teach general principles instead (Score:2, Insightful)
If you are solid in the principles of programming, the choice of language shouldn't matter. They will never be able to teach you every language out there. I think it would be much better to have an intro to different languages instead. Perhaps they do; don't really know. I don't think that this is a wasted course or anything. Any additional experience is great. Is this meant as
bad idea (Score:2)
Re:bad idea (Score:1, Insightful)
Re:bad idea (Score:1)
Why? I think that, beyond the core curriculum and what is required, any non-credit optional courses (which this is, for a CS student) should be welcomed - even classes in, oh, basket-weaving (I'm serious, if it's non-credit and optional, why not? I'm sure there would be people interested in it). I really don't see the problem in offering things beyond what is required, just for the sake of interest or othe
ABOUT GODDAMN TIME (Score:3, Insightful)
But how the hell it took this long to get it introduced into any University Curriculum is what truly has been pathetic.
If you can't introduce this technology to the future developers how do you expect to sell it, beyond the "ease of use" paradigm?
Hopefully Berkley will be next followed by the University of Washington until the entire Pac-10 offers classes.
Re:ABOUT GODDAMN TIME (Score:2)
I've been looking for university level courses in Mac programming for over a decade. I'd just about given up when I read this announcement.
Re:ABOUT GODDAMN TIME (Score:2)
CMU? (Score:1)
As for "any other schools teaching objective-c (useful on Macs)"
Re:CMU? (Score:1)
Theory Vs. Practice (Score:4, Insightful)
I think a diverse choice of classes using different languages and actually going in-depth into a language itself can be helpful. I mean, there are a lot of optimizations in languages, C for example, that are done by taking advantage of the structure of the language itself -- which one can only discover after diving headfirst into a language. I wish someone would have pointed certain things out to me about C or Java that aren't immediately apparent.
Bottomline, we're not all out to get PhD's and become evolutionary CS people. Some people just want to learn a language or two, get really good at it, and get a job. Not everyone wants to write a thesis on Compiler Optimizations.
Re:Theory Vs. Practice (Score:1)
Ah, but I would argue that those wishing to "learn a language or two, get really good at it, and get a job" would be better served by "technical institutes" (no, I don't mean MIT). A market certainly exists for that type of education, and those places usually teach programm
Re:Theory Vs. Practice (Score:1)
I go to CMU, and I know plenty of people there who have gotten BS in CS and gone on to jobs. I know some who have stayed for Masters. I know very few who have stayed for PhD. So that says to me
Re:Theory Vs. Practice (Score:2)
implementation is the proper business of people
without intellectual curiosity. I can't agree.
The software world needs practitioners with
groundings in theory, and always will.
Very Encouraging (Score:2, Insightful)
Yeah, (Score:2, Informative)
The cource is called Human-Computer Interaction and it's on the CS Department at Lund University (Sweden).
http://www2.cs.lth.se/dat006/index.html
I plan on taking it sometime soon, if they don't cancel the whole cource.
I've seen them using Interface Builder on their labs and such. Unfortunately we only have 14 Macs, so the excercises may get a little crowded..
Re:Yeah, (Score:1)
Re:Yeah, (Score:1)
(And last week, it rained a LOT!)
Cocoa as a good tool for CS learning (Score:4, Interesting)
It's not like people doing CS courses don't use a number of tools they'll never use again after they get their degree (LISP compilers anyone? PROLOG? Obscure emulated environments? Did all those and more... learnt Cocoa in my free time, BTW).
But in the interest of teaching good programming instead of "what's popular out there now" I'd rather have those coming behind me learning something like Cocoa and then adapting to Java or whatever (whose designed BTW is in many parts based on NextStep) than becoming klutzes with whatever has the greatest demand for code monkeys today.
Just my
Great! But what about Newtonscript? (Score:2, Interesting)
Talk of Newtonscript makes me think of soup, and now I'm hungry...
Oberlin Cocoa (Score:1)
Last spring at Oberlin College, I (a student) taught a semester-long "Experimental College" course in Objective-C and the OpenSTEP API.
I taught it with GNUstep, keeping it straightforward and platform-independent, though most of the students who stuck with the course had Macs of their own.
A respectable 7 were enrolled, not bad for a program with less than 30 majors.
Tangentially, I've also completed a number of my assignments for other courses (namely Graphics and Operating Systems) using Objective-
CS492 at the U of A (Score:1)