I took the class with Dr. Popowich. Pulled an A-, but then I didn't complete the last assignment because it was just too much of a PITA so yeah, I coulda done better.
Coulda been worse. I knew a guy who retook an organic chem lab course and pulled the exact same grade. Now that's a kick in the ass and a half.
PSA for people thinking of doing a computing course in general:
It really helps to understand the basic theory of programming somehow, some way. Even if you have to get an Apple ][ from 1977 to bang away on, learn your computer's programming language. The concepts of programming (procedurally, anyway) haven't changed much in 40 years.
(Except that using a GOTO will give people major hives now)
Coulda been worse. I knew a guy who retook an organic chem lab course and pulled the exact same grade. Now that's a kick in the ass and a half.
PSA for people thinking of doing a computing course in general:
It really helps to understand the basic theory of programming somehow, some way. Even if you have to get an Apple ][ from 1977 to bang away on, learn your computer's programming language. The concepts of programming (procedurally, anyway) haven't changed much in 40 years.
(Except that using a GOTO will give people major hives now)
A GOTO gives me hives just thinking about it. Dreams of me drowning in spaghetti start to occur.
Like a GOTO function in a computer language? I've been hearing about this function but never understood why it's a troublemaker.
goto functions create jumps to specific lines of code
for example u *could* (but never should) use a goto function to jump into the middle of a function, so ur program will crash cuz variables might not be defined or an array of other unwanted problems could occur.
using goto functions is called spaghetti code because the logic of the program is not straightforward. its not easily apparent what the program is doing or the logic behind it... think of it like those old Goosebumps books where u could choose which page to jump to next to continue the story... pain in the ass :tongue:
I understand how it works but I was assuming that an efficient programmer should have a good understanding of a function before using it.
I'm guessing the difficulty with this function lies more on the debugging part, rather than it's defined functionality, which I think is pretty useless and only makes studying already written programs even harder.
goto functions create jumps to specific lines of code
for example u *could* (but never should) use a goto function to jump into the middle of a function, so ur program will crash cuz variables might not be defined or an array of other unwanted problems could occur.
using goto functions is called spaghetti code because the logic of the program is not straightforward. its not easily apparent what the program is doing or the logic behind it... think of it like those old Goosebumps books where u could choose which page to jump to next to continue the story... pain in the ass :tongue:
I understand how it works but I was assuming that an efficient programmer should have a good understanding of a function before using it.
I'm guessing the difficulty with this function lies more on the debugging part, rather than it's defined functionality, which I think is pretty useless and only makes studying already written programs even harder.
This is a function that should never be necessary. The flow of logic should be seamless. As an example, one might use GOTO in an attempt at avoiding passing parameters, avoiding using pointers and to not modularize code properly (obviously c/c++ context). Any CS student realizes this is bad and just doesn't do it.
Online Predator makes a good point: it makes code very hard to read. Other peoples code is hard enough to read without GOTO's.
well i used goto statements when i did machine code programming but those were small applications so the logic was simple and clear in larger problems goto's wont work as the code is worked on by more then one person (most of the time) plus u cant expect to work @ a company forever so it can make sense to you but it sure as hell aint gonna make any sense to the person who will replace you eventually (or even coworkers) goto's is just lazy man programming and in the long run probably costs more time in debugging or when modifying code to fix all the goto related issues
In assembly language the GOTO would be the equivalent of jumping to a specific address to continue code execution. Also a bad idea if your code is meant to be moved around, so you want to be able to instead pass execution to relative addresses away from the current location in memory.
Unfortunately older computers rather promoted the use of GOTOs or equivalents because the memory allocation was more static back then. Even today, in BASIC, you can actually GOTO a line number if you use them, or GOTO a specific label in your code.
But I've rather derailed the subject :)
The basic point of warning for people taking 165 who've never programmed before is that learning the theory of programming is often best done prior to taking the course, so that the only thing that need be done is learn python's quirks. :)
To further derail the subject, if my memory of assembly serves me right (and not outdated), the GOTO function is and has always been necessary in assembly.
Yes, nowadays there is dynamic allocation, but that only means it re-allocates an entire program as one entity, not parts of it in which case you might assume would require "jumping" to the re-allocated parts.
For example, say, the Firefox app is running and needs to be re-allocated, then the entire app's running binary will be allocated as one entity to a diff part in the memory, not just parts of it. The GOTO functions (or "jumping") in this context only exists within the entire memory-real-estate of a program's (Firefox) binary in the parts where "if-statements", "loops", etc. were used.
On Sun, 12 Jan 2003, Rob Wilkens wrote: > > However, I have always been taught, and have always believed that > "goto"s are inherently evil. They are the creators of spaghetti code
No, you've been brainwashed by CS people who thought that Niklaus Wirth actually knew what he was talking about. He didn't. He doesn't have a frigging clue.
...
Any if-statement is a goto. As are all structured loops.
And sometimes structure is good. When it's good, you should use it.
And sometimes structure is _bad_, and gets into the way, and using a "goto" is just much clearer.
For example, it is quite common to have conditionals THAT DO NOT NEST.
In which case you have two possibilities
- use goto, and be happy, since it doesn't enforce nesting
This makes the code _more_ readable, since the code just does what the algorithm says it should do.
- duplicate the code, and rewrite it in a nesting form so that you can use the structured jumps.
This often makes the code much LESS readable, harder to maintain, and bigger.
Of all instances of the use of GOTO, I am sure some of them are useful. I, personally, have been taught to avoid them. The reason I was taught to avoid them is that most ppl. dont know how to use it effectively and you could seriously muck something up.
This implies that there is an effective use for it, but best left for people with experience, like Mr. Linux himself, lol.
Wow I'm starting to worry after reading all the available posts on this subject. I don't know whether I'll survive this course but I've taken Math, Stats and done a bit of html for my blog. Not sure if that makes any difference though.
Did anyone here take CMPT 165 with Bobby Chan in previous semesters? Is he any good?
No idea sorry. If you have done ANY programming in ANY language before hitting 165 it'll really help you, because the basic principles of programming are not that much different from language to language - you start off declaring your variables, then move into how to manipulate the data you want and output the results you want.
NukeChem, you took both CMPT 165 and CMPT 110 right? How do they compare in difficulty? I've already taken CMPT 110 and I'm thinking of taking CMPT 165 in the fall.
165 is not bad. I had 165 at the Burnaby campus with Dr. Popowich. I don't know how different your instructor will be, but I can try to dig up some materials. It helps if you understand the basics of HTML, though.
165 is not bad. I had 165 at the Burnaby campus with Dr. Popowich. I don't know how different your instructor will be, but I can try to dig up some materials. It helps if you understand the basics of HTML, though.
I did some basic HTML back in high school, and it was fairly easy. I've got the CMPT 165 distance education manual and I'll probably look through it during the summer to ease my course load during fall.
I had CMPT 150 with Bobby Chan and I'd say he's a pretty good prof. He's quite clear and responds to emails pretty fast.
As for 165, you definitely don't have anything to worry about for the first half of the course, which is just HTML and CSS. The last part, Python, tends to give some people who never programmed before problems but you'll probably be fine as long as you practice and ask questions. Also, when I took it during the Fall they removed some of the harder concepts such as for-loops, while-loops etc., so some of the older comments might not be so accurate anymore.
I had CMPT 150 with Bobby Chan and I'd say he's a pretty good prof. He's quite clear and responds to emails pretty fast.
As for 165, you definitely don't have anything to worry about for the first half of the course, which is just HTML and CSS. The last part, Python, tends to give some people who never programmed before problems but you'll probably be fine as long as you practice and ask questions. Also, when I took it during the Fall they removed some of the harder concepts such as for-loops, while-loops etc., so some of the older comments might not be so accurate anymore.
Comments
I HATE YOU CMPT165
PSA for people thinking of doing a computing course in general:
It really helps to understand the basic theory of programming somehow, some way. Even if you have to get an Apple ][ from 1977 to bang away on, learn your computer's programming language. The concepts of programming (procedurally, anyway) haven't changed much in 40 years.
(Except that using a GOTO will give people major hives now)
for example u *could* (but never should) use a goto function to jump into the middle of a function, so ur program will crash cuz variables might not be defined or an array of other unwanted problems could occur.
using goto functions is called spaghetti code because the logic of the program is not straightforward. its not easily apparent what the program is doing or the logic behind it... think of it like those old Goosebumps books where u could choose which page to jump to next to continue the story... pain in the ass :tongue:
I'm guessing the difficulty with this function lies more on the debugging part, rather than it's defined functionality, which I think is pretty useless and only makes studying already written programs even harder.
Online Predator makes a good point: it makes code very hard to read. Other peoples code is hard enough to read without GOTO's.
in larger problems goto's wont work as the code is worked on by more then one person (most of the time) plus u cant expect to work @ a company forever so it can make sense to you but it sure as hell aint gonna make any sense to the person who will replace you eventually (or even coworkers)
goto's is just lazy man programming and in the long run probably costs more time in debugging or when modifying code to fix all the goto related issues
Unfortunately older computers rather promoted the use of GOTOs or equivalents because the memory allocation was more static back then. Even today, in BASIC, you can actually GOTO a line number if you use them, or GOTO a specific label in your code.
But I've rather derailed the subject :)
The basic point of warning for people taking 165 who've never programmed before is that learning the theory of programming is often best done prior to taking the course, so that the only thing that need be done is learn python's quirks. :)
Yes, nowadays there is dynamic allocation, but that only means it re-allocates an entire program as one entity, not parts of it in which case you might assume would require "jumping" to the re-allocated parts.
For example, say, the Firefox app is running and needs to be re-allocated, then the entire app's running binary will be allocated as one entity to a diff part in the memory, not just parts of it. The GOTO functions (or "jumping") in this context only exists within the entire memory-real-estate of a program's (Firefox) binary in the parts where "if-statements", "loops", etc. were used.
This implies that there is an effective use for it, but best left for people with experience, like Mr. Linux himself, lol.
Did anyone here take CMPT 165 with Bobby Chan in previous semesters? Is he any good?
Thanks.
Thanks for the input.
As for 165, you definitely don't have anything to worry about for the first half of the course, which is just HTML and CSS. The last part, Python, tends to give some people who never programmed before problems but you'll probably be fine as long as you practice and ask questions. Also, when I took it during the Fall they removed some of the harder concepts such as for-loops, while-loops etc., so some of the older comments might not be so accurate anymore.