1 / 36

Switching from UNIX to VS.NET in a large CS1 course

Switching from UNIX to VS.NET in a large CS1 course. Richard Enbody Computer Science & Engineering Michigan State University. Questions. Why did we do it? What was the good, the bad, & the ugly?. Talk. Students Course Problems Conclusion. Background. The school The students

Télécharger la présentation

Switching from UNIX to VS.NET in a large CS1 course

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Switching from UNIX to VS.NET in a large CS1 course Richard Enbody Computer Science & Engineering Michigan State University

  2. Questions • Why did we do it? • What was the good, the bad, & the ugly? Michigan State University Computer Science and Engineering

  3. Talk • Students • Course • Problems • Conclusion Michigan State University Computer Science and Engineering

  4. Background • The school • The students • The course All are relevant to the switch. Michigan State University Computer Science and Engineering

  5. School • BIG! 40,000 students • Big10 • Michigan State University • University of Michigan • “Premiere land grant” University (1855) • Computer Science is within Engineering Michigan State University Computer Science and Engineering

  6. Students • many first-in-family to college • many from inner-city Detroit or farm with no or old computer ... this made a difference (also many very bright and computer literate) Michigan State University Computer Science and Engineering

  7. Course • CS1: first course for majors • C++ Unix (g++) since 1990 • Calculus prerequisite • 3 hours of lecture + 2-hour lab • 2 x 150-student lecture sections • 21 x 17-student labs with a TA Michigan State University Computer Science and Engineering

  8. Course Topics • Class as an abstract data type (ADT) • STL emphasis (vector) • Module interface is important (more later) • Briefly: pointers and exception handling Michigan State University Computer Science and Engineering

  9. Work • Weekly 2-hour lab exercise • e.g. observe how a for-loop works in the debugger and then write a short program using a for loop. • 11 homework programming projects • approximately weekly • Last is “design a C++ class and use it”. Michigan State University Computer Science and Engineering

  10. Why switch? • The boss said so. • IDE -- debugger especially • "everyone" has a PC • Growing use of VS in upper-level courses and faculty interest in VS.NET • VS.NET academic edition • Microsoft offered to help Michigan State University Computer Science and Engineering

  11. CS2 did not switch CS2 course remains Unix (g++) • after CS1 & CS2 all students can program in both Windows and Unix • Upper-level courses can choose the appropriate platform • Difficulties of platform switch are unknown because first class is this fall Michigan State University Computer Science and Engineering

  12. Time Frame • Decision in November 2001 • Implementation January 2002 Basically, conversion over Christmas break Michigan State University Computer Science and Engineering

  13. Infrastructure • A class of 300 students requires infrastructure. • After 12 years of Unix/g++ we have a lot of infrastructure – all Unix based Michigan State University Computer Science and Engineering

  14. Hardware Most students cannot run VS.NET at home • insufficient hardware • older O/S (Win95/98/ME) Need: • 2GByte for install; 500 MB installed (lot less for CS1)(need 4GByte for install from download) • 600 MHz PIII • 192 MByte memory (WinXP) • Win2000 or WinXP Michigan State University Computer Science and Engineering

  15. Software • MS provided VS software for download • VS.NET for those who could • VS 6.0 for others • MS provided O/S upgrade so those with hardware could run VS.NET • Windows2000 • WindowsXP That is, MS tried really hard to help. Michigan State University Computer Science and Engineering

  16. Lab • A new lab of 18 PCs. • Two servers to handle remote Terminal Services logins • Dual 2 GHz Xeon • 1.6 Gbyte RAM (Thanks Microsoft!!) Michigan State University Computer Science and Engineering

  17. Where are we? • 300 novice users • Most cannot run VS.NET at home • also rules out VS.NET Academic • One lab of 18 computers scheduled 9-5 M-F, i.e. unavailable for homework Michigan State University Computer Science and Engineering

  18. Servers • If there are few who cannot use VS.NET at home, servers nicely fill the gap.We’ll get there over time. • Servers were also useful for labs with old computers unable to run VS.NET.(Solved this summer.) It is also possible to access servers from Unix machines. Michigan State University Computer Science and Engineering

  19. What did we do? • Developed “empty console apps” • very Unix like • Portable across VS 6.0, VS.NET, g++ • Not really – more later • Students programmed both flavors of VS • Labs were VS.NET • Many homework projects were done in 6.0 Michigan State University Computer Science and Engineering

  20. What about .NET? • Bill Gates said: “.NET is about self-describing data structures” • CS1 is not a data structures course sowe did not use .NET cool features in CS1:relatively difficult with novice C++ users(possibly a problem with instructors) • Students now are familiar with the IDE and have .NET in hand for upper-level classes Michigan State University Computer Science and Engineering

  21. Problems Michigan State University Computer Science and Engineering

  22. Compiler differences • Unix g++ (version 3.0) • STRICT enforcement of language syntax • VS • Tries VERY hard to compile Interesting philosophical difference! Michigan State University Computer Science and Engineering

  23. For Example • No type on const declaration const i = 10; const x = 4.3; • For-loop scope for (int i = 0; i < 10 ; i++) { // some code}cout << i; • Parameterless function parenthesis validate; // instead of validate(); Michigan State University Computer Science and Engineering

  24. Example, cont’d • For-loop double index for (double i = 0; i < 10 ; i++) { // code} • Mismatched type conversion int x; pow(x,2); // expected double x Michigan State University Computer Science and Engineering

  25. Examples cont’d • Index off end of vector • dramatic seg fault in Unix • Unix is case sensitive • included filenames • g++ (v. 3.0) link/loader • expects class names to match filenames Michigan State University Computer Science and Engineering

  26. Code is not portable We thought that “empty console app” code would be portable, and it is almost all the time…but “almost” doesn’t work. • Problem for graders • We tried unsuccessfully to grade on Unix using our existing infrastructure – disaster in later programs • Problem for multiple platform curriculum • Or maybe this is a good learning experience Michigan State University Computer Science and Engineering

  27. Precompiled code • Precompiled code is very useful for developing the importance of interfaces. • Proved cumbersome in mixed environment:VS.NET and VS 6.0 were differentand both were messy • VS.NET Academic looks promising for making this easy & automatic for studentsonce all students are on VS.NET. Michigan State University Computer Science and Engineering

  28. Servers (more) • Memory is the limiting factor:40-50K per user so25 simultaneous users max per machine • Licensing for Terminal Services was difficult to set up for an academic environment (LOTS of help from Microsoft to get this right). • Closing rather than exiting Terminal Services leaves disconnected processes Michigan State University Computer Science and Engineering

  29. VS.NET Academic • Handin stores files in randomly named folders/directories • great for security • lousy for integration with our infrastructure(directory structure based on user id) • Assumes automatic scoring of programs • Database for keeping track of information(blessing and a curse) • In short: we didn’t use it (but we will eventually) Michigan State University Computer Science and Engineering

  30. Honors • MSU has a special group of Honors students who get special sections (and do lots of extra work). • The Honors section learned some C# (on top of the C++ regular work). • developed a visual interface to a card game • very successful Michigan State University Computer Science and Engineering

  31. Good? • The VS IDE helped students with some concepts • How loops work. • How conditional statements work. • How functions work. • I did not have to teach these concepts: walk through them with the debugger in lab and it is obvious. Michigan State University Computer Science and Engineering

  32. Good (cont’d) • The multiple platform CS1 & CS2 • should be a good experience for students(possibly painful at transition). • promises to offer flexibility for upper-level course platform choices. • VS.NET Academic code distribution Michigan State University Computer Science and Engineering

  33. Issues • Many freshmen have poor (no?) problem-solving skills. How do you teach problem solving using a computer, if they cannot solve problems without a computer? • Programming Pairs is promising • Active learning has not made a difference. Michigan State University Computer Science and Engineering

  34. Conclusion • Switch was good for CS1 • Familiar environment eased intro • IDE eased learning of some topics • Multiplatform CS1 & CS2 • Promises to be good, but could be painful • Problems • Not all students run VS.NET • Compiler differences (Herb Sutter fix?) • Precompiled code • Unknown: VS.NET Academic Michigan State University Computer Science and Engineering

  35. Questions? Michigan State University Computer Science and Engineering

More Related