Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Juul-Whip
Mar 10, 2008

Mr Dog posted:

Teaching algorithms and data structures in C is good, having programmers write their very first programs in some non-awful asm (i.e. not x86) is better, maybe even hand-assemble an instruction or two.

The closer their mental model of a computer is to "a machine made of many simple parts" and the further away it is from "an incomprehensible mystic construct you chant memorised spells at" the better

oh yeah I loved cmpt 150/250, where we p much went from truth tables to designing a complete MIPS CPU, writing asm programs and whatnot. having already been around the OO block a fair bit it was awesome to get back to basics and learn how it all fits together.

but idk if it's the best use of your time if you're dealing with a weekend warrior who just wants to play with some code and make dumb little things which nonetheless vaguely feel like the software they use at home.

the other day I helped a math major with an assignment from an intro programming class, and their stupid professor wanted them write a java program which simulated a MIPS architecture with opcodes and poo poo. so they were having to learn and apply high level programming AND computer design at the same time. it was atrocious.

Juul-Whip fucked around with this message at 13:33 on Feb 28, 2013

Adbot
ADBOT LOVES YOU

Cybernetic Vermin
Apr 18, 2005

Mr Dog posted:

Teaching algorithms and data structures in C is good, having programmers write their very first programs in some non-awful asm (i.e. not x86) is better, maybe even hand-assemble an instruction or two.

The closer their mental model of a computer is to "a machine made of many simple parts" and the further away it is from "an incomprehensible mystic construct you chant memorised spells at" the better

the python course is to a great part for people like economics students and such though, where it is not so much a foundation for a deep understanding of programming as it is practice for stringing things together in some tools they use. even then though python does not work out all that well, the complex fundamental building blocks distract from getting the mental model necessary to structure a program. i don't think that java really gives a clear idea of how the computer works, but it is conceptually simpler

a more funny aspect that we easily solve though is that in python the students often get a very confused idea that they are supposed to learn the library, and feel that they are doing something wrong when they are solving a task by actual programming rather than doing a sequence of library calls v:shobon:v

Sapozhnik
Jan 2, 2005

Nap Ghost
well, idk I think if you had one semester to do it in then you could get someone to the point where they could code up some linked list ops in C and understand what's actually going on. This is a very powerful thing because it makes the standard library look like convenient shorthand instead of black magic.

This doesn't teach somebody how to structure code though, and I'd love to find a better way for people to learn other than "gently caress it up over and over again until you get a feel for what not to do". Ken Silverman wrote the Duke Nukem 3D engine when he was eighteen, and he had his algorithms and data structures and cache awareness and inner loop optimisation down COLD, but the code is an absolute loving mess. Kid was driven as hell but he just didn't have the experience to make it maintainable at that point in his life.

Shaggar
Apr 26, 2006

Cybernetic Vermin posted:

the python course is to a great part for people like economics students and such though, where it is not so much a foundation for a deep understanding of programming as it is practice for stringing things together in some tools they use. even then though python does not work out all that well, the complex fundamental building blocks distract from getting the mental model necessary to structure a program. i don't think that java really gives a clear idea of how the computer works, but it is conceptually simpler

a more funny aspect that we easily solve though is that in python the students often get a very confused idea that they are supposed to learn the library, and feel that they are doing something wrong when they are solving a task by actual programming rather than doing a sequence of library calls v:shobon:v

tbh I think groovy would be a better babbys first language than python in every way. the syntax is simple enough that they don't really need to worry about objects and stuff yet, but then its also very similar to java so its easy for them to move on in later classes. I like java for data structures cause the collections library has all the good stuff already implemented and students can use it as is, but then swap in their own implementations without any pain at all. it shows them how it should work, provides structure for building their own implementations via collections interfaces (List,Set,Map,etc...), all while teaching some real world polymorphism in a real world language. then you've got all ur lower level languages for the os classes and what not.

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
codechat:

last night i opened up Higher Order Perl again.

This book is basically like a tractor pull for me. Every time it starts out the same difficulty, but each run through I get a little farther before I bog out and stall.

last night i think i actually got the concept of closures. holy poo poo these are cool
and i think i understand currying functions now? thats neat too.

also learned more about iterators and how to hack them together. this is useful and i am applying it immediately at work.


took a 30min browse of the scala wiki page; it looks neat and i may put it on the list.

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band

Jonny 290 posted:

codechat:

last night i opened up Higher Order Perl again.

This book is basically like a tractor pull for me. Every time it starts out the same difficulty, but each run through I get a little farther before I bog out and stall.

mjd is my hero (one of them, anyway) :allears:

Tiny Bug Child
Sep 11, 2004

Avoid Symmetry, Allow Complexity, Introduce Terror
closures own. whenever someone says javascript is a bad language it's because they don't get closures

hobbesmaster
Jan 28, 2008

no, JavaScript is just bad

double sulk
Jul 2, 2010

hobbesmaster posted:

no, JavaScript is just bad

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
es6 is lookin pretty sly tho

Tiny Bug Child
Sep 11, 2004

Avoid Symmetry, Allow Complexity, Introduce Terror

lol you don't get closures.

Cybernetic Vermin
Apr 18, 2005

closures being awesome does little to save javascript from being awful

double sulk
Jul 2, 2010

Tiny Bug Child posted:

lol you don't get closures.

lots of languages have closures, but just because they have them doesn't mean they're necessarily good.

Cybernetic Vermin
Apr 18, 2005

imagine an alternative universe where brendan eich invented closures and were even more insufferable~~

trex eaterofcadrs
Jun 17, 2005
My lack of understanding is only exceeded by my lack of concern.

Shaggar posted:

tbh I think groovy would be a better babbys first language than python in every way. the syntax is simple enough that they don't really need to worry about objects and stuff yet, but then its also very similar to java so its easy for them to move on in later classes. I like java for data structures cause the collections library has all the good stuff already implemented and students can use it as is, but then swap in their own implementations without any pain at all. it shows them how it should work, provides structure for building their own implementations via collections interfaces (List,Set,Map,etc...), all while teaching some real world polymorphism in a real world language. then you've got all ur lower level languages for the os classes and what not.

groovy has some issues like automatic "stringification" for map keys, weird range syntax rules because of loose parsing, ruby-esque paren omission in some cases but not others that i think would hamper n00bs

i still like groovy as a "near-java templating language" but i wouldn't use it to teach CS101

Shaggar
Apr 26, 2006
yeah I guess. maybe you could avoid that stuff, stick to basic procedural stuff, and then move into java quickly once they want to start doing more complex stuff. idk. maybe instead make a babby's first java shell type thing that's just eclipse that hides the public static void main and just lets them write simple procedural java. then pull it back and start doing real stuff? idk??? I never had problems picking up java myself cause of previous programming stuff in highschool (pascal [lol] and c++). so I guess I really cant say what would be useful for new students w/ no experience.

Shaggar fucked around with this message at 16:22 on Feb 28, 2013

Malcolm XML
Aug 8, 2009

I always knew it would end like this.

trex eaterofcadrs posted:

groovy has some issues like automatic "stringification" for map keys, weird range syntax rules because of loose parsing, ruby-esque paren omission in some cases but not others that i think would hamper n00bs

i still like groovy as a "near-java templating language" but i wouldn't use it to teach CS101

This is why using Haskell to teach CS fundamentals is great since you can rely on equational reasoning and algebra and don't have to worry about poo poo like memory management when trying to teach recursion or algorithms

Then you learn C or whatever to get close to real machines

Oxford does this fyi so it's not exactly without precedent

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

Malcolm XML posted:

This is why using Haskell to teach CS fundamentals is great since you can rely on equational reasoning and algebra and don't have to worry about poo poo like memory management when trying to teach recursion or algorithms

haskell is a great way to misteach algorithms, cf. idiomatic haskell quicksort not actually being quicksort, etc

Shaggar
Apr 26, 2006

Malcolm XML posted:

This is why using Haskell to teach CS fundamentals is great since you can rely on equational reasoning and algebra and don't have to worry about poo poo like memory management when trying to teach recursion or algorithms

Then you learn C or whatever to get close to real machines

Oxford does this fyi so it's not exactly without precedent

i bet its also tought by a math prof too. gross.

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe
TBC blog incoming
Is it really so bad to develop on a production server?

Notorious b.s.d.
Jan 25, 2003

by Reene

horse mans posted:

gc pausing is a non issue!

*display ad bidding fleet pauses the world for 50s for GC, literally six figures go straight down the drain*

funny that you should mention ad bidding, seeing as java dominates that space

appnexus was just the first to come to mind because i have actually talked to these guys. they work under hard real-time constraints with millions of transactions a second, all java all the time

gc pausing really is a non-issue. you can still have stop-the-world gc in real-time, because what is important is predictable pauses, not the presence or absence of pausing. (i think they mostly use concurrent gc tho, to sidestep the issue entirely)

JawnV6
Jul 4, 2004

So hot ...

Mr Dog posted:

I'd love to find a better way for people to learn other than "gently caress it up over and over again until you get a feel for what not to do"

hey when you figure this out, be sure to share it with every other discipline that isn't CS

also when you get your first crop of bright-eyed eager students, enjoy crushing their enthusiasm with "hand assembling multiple instructions" christ that is literally a mechanical task

GameCube
Nov 21, 2006

Shameproof posted:

In Corinian C we don't say x.hello() or x->goodbye(), we say [x salame]

try not to shed no tears

GameCube
Nov 21, 2006

so i picked up coders at work and i think i discovered how!!'s secret identity

quote:

Zawinski: Yes, there are definitely times when you have to cut your losses. And this always feels wrong to me, but when you inherit code from someone else, sometimes it's faster to write your own than to reuse theirs. Because it's going to take a certain amount of time to understand their code and learn how to use it and understand it well enough to be able to debug it. Where if you started from scratch it would take less time. And it might only do 80 percent of what you need, but maybe that's the 80 percent you actually need.

Malcolm XML
Aug 8, 2009

I always knew it would end like this.

Otto Skorzeny posted:

haskell is a great way to misteach algorithms, cf. idiomatic haskell quicksort not actually being quicksort, etc

It's an out-of-place quicksort but that's an opportunity to teach people about the pros and cons of mutable data structures

Note you can get a mergesort that's more or less the same, so it's not like the world is lost because of MY QUICKSORTZ


Shaggar posted:

i bet its also tought by a math prof too. gross.


Nah it's in the CS dept. but cs is a subset of math so it's not like theres a semantic difference

Tiny Bug Child
Sep 11, 2004

Avoid Symmetry, Allow Complexity, Introduce Terror

Cybernetic Vermin posted:

closures being awesome does little to save javascript from being awful

nothing needs to save javascript from being awful cause the only people who think it's awful are bad programmers or people who haven't touched it since 1998 (but i repeat myself)

Cybernetic Vermin
Apr 18, 2005

brendan? is that you?

X-BUM-RAIDER-X
May 7, 2008

Mr Dog posted:

Teaching algorithms and data structures in C is good, having programmers write their very first programs in some non-awful asm (i.e. not x86) is better, maybe even hand-assemble an instruction or two.

The closer their mental model of a computer is to "a machine made of many simple parts" and the further away it is from "an incomprehensible mystic construct you chant memorised spells at" the better

lol this is absolute nonsense. seriously why the gently caress would you do this?

Tiny Bug Child
Sep 11, 2004

Avoid Symmetry, Allow Complexity, Introduce Terror

OBAMA BIN LinkedIn posted:

lol this is absolute nonsense. seriously why the gently caress would you do this?

fetishization of obsoleteness

X-BUM-RAIDER-X
May 7, 2008
since my autism requires me to think only in extremes, i'm going to force you to use some ancient antiquated language and loving about with memory management in 2013 tyool so you can learn how a binary tree works.

HappyHippo
Nov 19, 2003
Do you have an Air Miles Card?
javascript has some bad parts (hell the book is called "the good parts") but most (not all) of them can be ignored and closures are indeed awesome and javascript makes it easy to use them. ive been writing games in javascript and dare i say i enjoy it? its not really a "good" language but its not nearly as awful as its made out to be

Bream
Feb 3, 2013

Farmer's Barket
Dudes someone at some point has to know how to do this poo poo. Javascript is not self-hosting.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Bream posted:

Dudes someone at some point has to know how to do this poo poo. Javascript is not self-hosting.

coffeescript is

Zombywuf
Mar 29, 2008

OBAMA BIN LinkedIn posted:

since my autism requires me to think only in extremes, i'm going to force you to use some ancient antiquated language and loving about with memory management in 2013 tyool so you can learn how a binary tree works.

I prefer to code by rubbing magic code cream on the repo until it looks not broken long enough to pass muster.

X-BUM-RAIDER-X
May 7, 2008
i love these cs profs that try to shoehorn memory management and other tedious crap into a completely different syllabus because they are stuck in the 80s when managing memory was still a thing that people did and because they had to deal with it when learning, obviously everybody in the 21st century should have to as well.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip
the computer is a magic box, what is this "swapping" horseshit you're talking about????????????????

Catalyst-proof
May 11, 2011

better waste some time with you
academia is glacially slow to adopt new practical approaches? well .... gently caress!

it's totally weird how it takes longer to reconcile new evidence with decades or centuries or millennia old epistomological frameworks

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

horse mans posted:

academia is glacially slow to adopt new practical approaches? well .... gently caress!

it's totally weird how it takes longer to reconcile new evidence with decades or centuries or millennia old epistomological frameworks

i don't think it's an epistemological framework that gets changed at all. the professor's views on knowledge and what it means to know something are not being modified, rather the things he knows within an immutable framework of what it means to know something are slow to change as he balances new evidence against old.

X-BUM-RAIDER-X
May 7, 2008

horse mans posted:

academia is glacially slow to adopt new practical approaches? well .... gently caress!

it's totally weird how it takes longer to reconcile new evidence with decades or centuries or millennia old epistomological frameworks

yeah man loving centuries of papers back the prof up when it comes to teaching a student to program data structures in loving assembly language. C is bad enough, but assembly? lmao

just because it's harder to make a binary tree in C than it is in python doesn't mean the student gets any more of a learning experience of it, infact they probably get less because they spend all their time messing about with memory errors and debugging than actually learning how the algorithm works. save the memory management crap for C or operating systems classes where it belongs.

Adbot
ADBOT LOVES YOU

Bream
Feb 3, 2013

Farmer's Barket
Yeah, guys, why don't you kiss girls and get on github instead of all this nerd poo poo?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply