• Welcome to Computer Association of SIUE - Forums.
 

g++ vs Visual Studio

Started by Phillip Ray II, 2010-09-08T21:27:55-05:00 (Wednesday)

Previous topic - Next topic

Robert Kennedy

Adam:  I agree entirely.  314 was the point that I came to the realization that I knew nothing, and that if I wanted to learn these things it would have to be done on my own. 

Phillip Ray II

During my CS 150 class today my teacher kept stressing the fact that although Visual Studio will help you in lots of ways, don't come to rely on those because all of his in-class tests are written and those tools will not be available. He said students in the past have complained that they shouldn't have to take a written test without the tools they are taught to use while coding during class.

I feel like it would help students greatly to start out using a text editor and seperate tools for debugging and compiling to help them understand the process and what each individual tool does. Afterwards, if they want to use Visual Studio that should be fine, but it shouldn't be required.

Adam C

You've nailed it precisely. I've never understood why its done this way. I've taken CS courses at two other colleges and at both of them, low level courses explicitly disallowed the use of an IDE, not the other way around.

djb

Gents,

I've been reading this thread with some interest. As some of you may know, I have (and plan to continue to) conduct research in the Computer Science Education field. In particular, my "specialty" has been 'novice programmers'. To date, the work I have done focuses on issues related to conveyance of concepts, and what skills novice programmers bring to the classroom (in hopes of using that to an advantage in teaching CS concepts).

The discussion of tool chain for novice programmers has been studied by some educators. There is no consensus found in the research literature that I am aware of. I have my biases, but one can teach/learn programming concepts (novice level programmers) using any reasonable tool chain (let's not debate what is reasonable right now -- give me a break, and keep reading).

I have taught intro CS programming at (five) other universities using other tool chains. I've been in labs with students struggling with Linux command line, vim, and gcc. I've been in labs with students struggling with other tools as well. While you can argue for one tool chain or another based on some subset of qualities; in the end, each has it's draw backs.

For the champions of Linux in this audience, I suspect you've long since repressed the struggles you had with learning simple things, like how to exit vim and what a 'bus error' really is. I also suspect that you are not the average student. You have probably coded for money and learned things on your own. Both admirable qualities, and qualities I wish that all CS majors possessed, but, alas ....

I would also like to point out that the focus in the early programming courses is on problem solving and programming concepts. Programming itself is a vehicle toward learning the basic logical concepts. The intro courses are not focused on a particular tool chain anymore than necessary. Having students use the tool chain of their choice in the course would create support nightmares, not just for grading assignments that compile with one, but not another; but also in being able to conduct class and answer questions. Imagine and instructor (in class or lab): "If you are using XXX, then type this, but if you are using YYY then type this, and if you are using ZZZz ..." ZZZzzzzzzzzz will be the sound (even more than it may be already) in the classroom if you are constantly trying to pay attention for the right conditional which tells you when to listen.

I have been open to students developing using alternative tools and alternative platforms. Even at the 300 level when I don't have to worry about mis-communication issues (yeah right), there are problems that arise in the variety of submissions. Adam C, you might recall when you were docked points because your code running in Windoze environment would crash, but didn't in OSX. We talked and I verified, but that was time spent on my part allowing flexibility.

I would argue (as I alluded to above) that students should learn new languages and tool on their own. We can't possibly deliver your education and training, too. You can take care of the training - learn new languages and tools on your own. These are the things that will distinguish you in the job search. Not because you know the right tools, but because you can learn new tools.

Do you really think a BS CS will teach you everything you need to know over the span of your career?

(musical interlude while you think about that question..... use your imagination or iPod ..... for me it's ColdPlay )


How many years would you like to spend getting a degree?

(musical interlude while you think about that question..... use your imagination or iPod ..... this time it's RUSH)



Could the CS department do a better job? You bet. We are working on that.

There are new courses on the drawing board, and it's likely that in the next few years (as they are rolled out in sequence) there will be a complete renovation of 100 and 200 level courses. One of the 200-level courses under consideration would introduce students to Linux and other languages (but not new tool chains, sorry). I'm intentionally avoiding specifics to avoid the religious arguments regarding language choice, etc.


(taking this a bit further down the road)

Computing is a unique field. Though there was earlier conceptual work, computing as an academic field/department is only about 50 years young. Our curricula tend to change significantly every decade. Compared to Math, Sociology, Economics, ... any other degree program on campus, including Engineering ... Computing is the most dynamic field. Some of the same Physics, Math, and engineering textbooks I studied from 20+ years ago are still being used. We, as a department, are a little behind, but we are making efforts to become current.

As I said before, people can learn to program with any reasonable tool chain. Back in the 80s, a punch card system was somewhat reasonable, and people still learned to program. I missed learning to program with punch cards by one year. My reasonable tool chain was a FORTRAN compiler and a linker. I used a dumb terminal on a slow time-share system.

What from my Freshman CS course is still relevant?

The concepts of documentation, making code readable, debugging techniques, and basic logic constructs of procedural programming. I learned a lot of other stuff on my own.

I apologize for the rambling nature of this message. I will spend the time I could have used making this message more readable to work on the new courses Freshmen, in years to come, will benefit from. So, in a sense, you are like the Freshman class before mine who learned to program on punch cards. (I bet they were a tough bunch).

-djb

Adam C

Yes, you have been one of the professors that, in my experience has been the most willing to work with us on alternate toolchains, I very clearly remember that incident (back in 340 if I'm not mistaken). You're certainly right about many things in your post and I'm really just glad that someone in the faculty is taking the time to evaluate the situation and put some thought into it.

Obviously you're never going to be able to please all of us with our favorite language/scm/toolchain/os etc. I think the most important takeaway is not the particular systems that are eventually selected so much as to instill the idea that there are many, equally viable alternatives, each of which has their own benefits and drawbacks. Once people are made to realize the existence of all the alternatives, then the impetus is on them to teach themselves as they see fit. That's what I did and its worked well for me, and many of my peers.

I think the most succinct definition of the problem is when I see 100 and even 200 level students call Visual Studio C++ as if they think those two things are one and the same or that one begets the other.

Thanks for listening to us whine, I really do appreciate knowing that someone is listening!

William Grim

+1 djb!  That message definitely comes from experience.  As mine has grown in the field, I, too, have begun to see things much more like that.  I don't get so caught up in tool chain specifics (for the most part) anymore when I just want to apply concepts and get the job done.  Needless to say, I still deliberate on the tool chains when I'm trying to think about what can be better in the workplace or my programming "on-the-side".
William Grim
IT Associate, Morgan Stanley

Robert Kennedy

#21
Quote from: djb on 2010-09-13T19:43:50-05:00 (Monday)
There are new courses on the drawing board, and it's likely that in the next few years (as they are rolled out in sequence) there will be a complete renovation of 100 and 200 level courses. One of the 200-level courses under consideration would introduce students to Linux and other languages (but not new tool chains, sorry). I'm intentionally avoiding specifics to avoid the religious arguments regarding language choice, etc.

Not to be the one to start any language wars or take this thread off topic (read:  I'm about to start some language wars and take this thread off topic), but I found MIT's Intro to Programming using Python Course(http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-a-gentle-introduction-to-programming-using-python-january-iap-2008/) on their Open Courseware site to be excellent.  I just figured I'd toss it out there in hopes that someone working on these courses could save themselves some time and effort by reusing some of the material.  

Quote from: djb on 2010-09-13T19:43:50-05:00 (Monday)
What from my Freshman CS course is still relevant?

The concepts of documentation, making code readable, debugging techniques, and basic logic constructs of procedural programming. I learned a lot of other stuff on my own.
Also, I've finally gotten around to reading "The Pragmatic Programmer".  I must ask, why isn't this book required reading for one of the 100 or 200 level courses?  Throughout the text I've found myself in a constant state of "I wish I would have read this when I was just starting out".  Granted, some mentions of specific applications are dated, but the majority of the material concerning industry best practices remains as relevant today as ever.  It just seems so packed with knowledge that will remain useful for years to come. 

Adam C

The Pragmatic Programmer is one of the 3 best programming books that I've ever read. It should be required reading for anyone even considering writing code for a living. Best of all, its platform/language/toolchain agnostic for the most part.

thatguy

Real programmers use butterflies.
#Something witty

Brent Beer

>8{(

thatguy

Quote from: Brent Beer on 2010-09-16T19:09:27-05:00 (Thursday)
what does...that even mean?



Alt text:  Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.
#Something witty

William Grim

I'm glad I use emacs.  Gotta love that C-x M-c M-butterfly.  Sometimes it doesn't work and you have to do C-u 2048 C-x M-c M-butterfly though.  It's all a bit random.
William Grim
IT Associate, Morgan Stanley

bouvier

I'm taking the appropriate (imnsho) from the this forum. I'll look at the Pragmatic Programmer. BTW, I like getting suggestions for improvement from people (even you). I may not accept your suggestion, but it invariably causes me to think about what we are doing.

Python? There are many factors to consider when selecting a language for a course. Just one of those factors is the available resources. I can't help but wonder, if an instructor (department, ... whatever) simply took an freely-available source and re-presented it to students, would the students feel cheated? I've thought I could teach that iPhone programming class by turning on a projector and getting the right iTunesU video to show on the right day.

Easy for me.
Value for students?

One could argue that is what we do with textbooks, but since students don't read textbooks, it probably isn't obvious to the average student.


Which takes this thread further afield than butterflies (maybe) ... what is the role of the University in a information-is-free society (not that we are there, yet)?

(I do like butterflies. Especially in a far field.)

Robert Kennedy

I wasn't really talking about using the video for the course.  I was thinking more along the lines of using the structure of the course.  That is of course working under the assumption that a course and its associated materials are thoroughly planned out before the Professor gives his/her first lecture. 

One of the reasons I like sites like Khan Academy, MIT OpenCourseware, Academic Earth, and others is the fact that if I don't understand a concept I can just rewind it a bit and watch it again.  I think the future of the University will almost require tapping into some of those same benefits of technology. I know most SIUE professors will abhor the concept of recording their lectures, but it would be beneficial to the education process.  This would be especially true in courses that you know will not be offered again anytime soon, such as your client/server course or the Unix Programming course. I would be very interested in the information that is shared in both of these courses, but schedule issues prevented it. 

As far as reading the books goes, at least in my case, I read the text from books that seem less like reference material and more like a teaching aide.  Just like I don't sit down and read an encyclopedia, I won't sit down an read a listing of what each individual bit in the header of an ATM packet signifies.  When it seems like a majority of the material in a course textbook is written this way, I tend to stop reading the book altogether pretty quickly.  Books that are written with an attempt at being interesting as opposed to purely informational have far more educational value for me at least.  Unfortunately, I think these are looked down upon in academia because they're not as objective.

William Grim

I hear Reading for Dummies is interesting and written in an interesting way as all the Dummies books try to be.
William Grim
IT Associate, Morgan Stanley