How to Not Drive Students Away from CIS


Randy Guthrie – Microsoft Technology Evangelist
http://blogs.msdn.com/b/mis_laboratory

I recently had a conversation with a student at a large public university about the introductory CIS class she was taking.  This student had attended a mobile app workshop and had a good enough experience that she wanted to explore the CIS major, and so took a leap of faith and signed up for the introductory course.  The course featured mostly software design theory, of which diagramming played a major part.  In fact the teacher even joked that the students probably weren’t enjoying the assignments, and just kept piling on those type of assignments like it was all fun.  Needless to say, my friend quickly lost her enthusiasm for the major and decided to stick with Finance.  What a loss for the department!

After that conversation, I ran into the department’s advisor and shared the short version of my conversation.  I shared with her my vision of what an introductory course should contain, and I’d like to share a few of my ideas and get some of yours.  Keep in mind, I taught a similar course back in the day when I was a college professor and so I am not at all guiltless.  But my 8+ years at Microsoft has opened my eyes to what really gets students excited, and so this list is based not on my academic experience, but my more recent evangelism experience.

1. The first course should be designed from ground up to attract and retain students to the major.  If there are any notions of making this some kind of “filter” class, you should encourage a different point of view.  This class should be all about fun, cool, and very hands-on, both hardware and software.   It should look more like a tech summer school workshop for high school kids rather than a theoretical college lecture course.

2. Students should be “making stuff” from day one.  Lead with “making”, then explain the theory AFTER they make it so the theory is embedded in rich contexts. Make a game.  Make mobile apps. Hack a server.  Program Arduino or Galileo boards and do fun things like making sounds, lighting up lights, responding to gestures, programming Kinect, interpreting speech.  Blow stuff up; make fires. This should be the most fun class you offer and if you do it right you’ll “sell-out” the class in minutes every semester when registration opens.  It should be a survey of every cool thing your department teaches and lots of stuff you don’t teach but that students may encounter in their careers (if you do a good job at least).  If you don’t teach cool stuff, then start here and work your way up.

3. Deemphasize legacy programming concepts such as diagramming. I spoke with a Program Manager at 343 Studios working on Halo 5, and there are NO formal or required data-flow diagrams, NO UML, NO E-R diagrams.  Other tech guys and gals across our team (about 50) that I have reached out to concur: we use boxes and arrows on white boards sometimes to illustrate and discuss high-level concepts, but special notation, different shaped boxes, etc. are from the old IBM flow-charting days and at least at Microsoft, we don’t use them very much, if at all, and I am willing to bet that few students are being asked to demonstrate those skills in interviews. Even if some companies still use it, is teaching those concepts in your introductory course worth the loss of student majors when you can always cover some of it in later courses?

4. Have faculty who make real stuff today teach the course.   This isn’t about fairness and equity; if a professor can’t rock this class then they shouldn’t be teaching it regardless of their academic qualifications, seniority, or even desire.

5. Bring in guest speakers from industry every other week to talk careers (for 15-20 minutes at the end and stay for Q&A after class).  Use your alumni network for speakers.

6. Have faculty from through-out the department “sponsor” (teach) projects in the class so students get to know a lot of faculty.  Rotate participation every semester. Faculty can submit proposals and your core course “professors” can pick. Yes I know, that’s not the way academia traditionally works, but you have a great opportunity to so something really impactful and transformative.

These are just a few ideas to get your creative juices flowing.  And oh by the way, you are more likely to attract and retain a far more diverse group of students using this approach, which is good for your school, and good for the software industry as a whole.

Got any great ideas in addition to these?  Please share!

Cheers,

Randy


Comments (4)

  1. Great post Randy. The first class should be about the excitement as much as about the concepts and foundation for more learning.

  2. KennySpade says:

    I was actually proud as a student when I made it through the filter class, but I knew everything they covered before I walked in the doors. I know a lot of people who changed majors because the class was meant to be hard. Looking back, it makes no sense to have classes that are meant to turn people off to the major.

  3. Garth says:

    Thank you for the confirmation.  As a high school teacher in an area with no programming I am always wondering it I am going about that first course correctly.

  4. As a follow-up to this post, I was just contacted last night by another student who is probably going to drop her CIS major because the classes are so boring and don't seem to be based on what is really happening in industry. Her university offers a certificate in Game Development and I encouraged her to explore that.

Skip to main content