School related materials have appeared!

Course materials have started popping up in all of the usual places! While I went hunting about, it occurred to me that this knowledge is (while findable) a bit arcane, so why not gather a bunch of it up and share it around? First off (for material's sake), Wlodek Dobosiewicz (just say Dobo) has some good content on http://www.cis.uoguelph.ca/~dobo/. CIS 2460, Modeling is up for F09, specifically the course outline. Also, CIS 3210, Networking, is up with an Introduction, Outline, and Intro to TCP. (all pdf documents)
Anyone who wants to just see what neat content is lying around should check out Dobo's CIS 3110, Operating Systems site and CIS 4210, Telecommunications too, and glance over the documentation there. From my experience, I remember enjoyable reads about the basics, processes, and interprocess communication. The stuff written by Beej is fantastic.
Next up, a list of professor's web presences:
Dave McCaughan: http://www.usrlocal.ca/~dbm/teaching/ (Good rants. Has taught 2750/2520 in the past to rave reviews. Nothing at the moment.)
Dave Calvert: http://hebb.cis.uoguelph.ca/~dave/ (some material still floating around, teaches game programming and computer graphics)
Judi McCuaig: www.cis.uoguelph.ca/~judi/ (Links to her Interactive Cognitive Computing website. Does a lot of neat HCI and Psych/Comp work)
Bill Gardner: www.uoguelph.ca/~gardnerw/ (Associate Chair and Bachelor of Computing Faculty Senator. He's teaching Special Topics 4500 (on Parallel Programming), and 2750 this year. See http://www.uoguelph.ca/~gardnerw/assoch/ for information about what 'Associate Chair' means.)
Stefan Kremer: http://www.kremer.ca or http://q.cis.uoguelph.ca/~skremer/ (neither works? - Knows a lot about Biotech/AI/Security)
Joe Sawada: http://www.cis.uoguelph.ca/~sawada/ (Often teaches 2910, looks surferish. Co-founded FreshBooks!)
Deb Stacey: http://hebb.cis.uoguelph.ca/~dastacey/ (Director of the School of Computer Science, teaches Software Engineering)
Blair Nonnecke: http://www.cis.uoguelph.ca/~nonnecke/ (On Sabbatical this semester? Does HCI/Usability. Is a photographer.)
Gary Grewal: http://www.cis.uoguelph.ca/~gwg/ (Teaches Digital Systems, 3120, and sometimes Microcomputing. Does very cool hardware stuff.)
Michael Wirth: http://www.uoguelph.ca/~mwirth/Site/Welcome.html (Teaches CIS 1500, where he'll let you know how much he dislikes windows)
Wlodek Dobosiewicz: http://www.cis.uoguelph.ca/~dobo/ (mentioned above -- great sense of humor)
Pascal Matsakis: http://www.cis.uoguelph.ca/~matsakis/index.html (Mucho math, I think he's teaching 2910 this year. Also a dancer.)
Dilip Banerji: http://www.cis.uoguelph.ca/~dbanerji/ (He's a hardware guru -- who has been in the Department since 1980!)
David Chiu: http://www.cis.uoguelph.ca/~dchiu/ (Knows his fuzzy logic. Usually teaches 1910)
Allan Dyer: http://www.cis.uoguelph.ca/~adyer (not there? -- Teaches CIS 1000/1200, "CIS for non CIS students". Also a Faculty Advisor.)
Xining Li: http://www.cis.uoguelph.ca/~xli/ ("The X Man", teaches CIS 2520, Data Structures)
Charlie Obimbo: http://www.cis.uoguelph.ca/~cobimbo/ (I've never had a class with Obimbo, and don't know enough to say something about him.)
Fei Song: http://www.cis.uoguelph.ca/~fsong/ (Teaches CIS 2430, Object Oriented Programming. He is an avid fan of Java.)
David Swayne: http://www.crle.uoguelph.ca/dswayne/ (Does some cool math and hardware stuff, teaching CIS 3000 this year.)
Fangju Wang: http://www.cis.uoguelph.ca/~fjwang/ (Teaches Algorithms ...questions?)
Mark Wineberg: http://www.cis.uoguelph.ca/~wineberg/ (A statistics professor in a CIS professor suit. He's very approachable.)
Yang Xiang: http://www.cis.uoguelph.ca/~yxiang/ (I've never had a class with Yang. He's done a lot of research.)
Mieso Denko: http://www.cis.uoguelph.ca/~denko/ (I've never had a class with Mieso. He Teaches at Guelph Humber.)
Qusay Mahmoud: http://www.cis.uoguelph.ca/~qmahmoud/ (I've never had a class with Qusay. He Teaches at Guelph Humber.)
Nidal Nasser: http://www.cis.uoguelph.ca/~nasser/ (I've never had a class with Nidal. He Teaches at Guelph Humber.)
Some people you should know (these are just my descriptions of their duties. I apologise for inaccuracy):
Deborah Stacey - Chair (or.. Director. I'm not sure what we're using at the moment. Probably Chair. Self Explanatory.)
Michael Wirth - Associate Chair (You'll find out whatever you need to know about him when you take CIS 1500 with him.)
Linda Allen - CIS/Eng/BSc Program Counsellor (Questions about requirements/area of application/minors/dropping courses, etc, should come to her. Find her in the Science Complex. Walk past Second Cup and take a left, signs will direct you.)
Allan Dyer - Faculty Advisor (has a similar role to Linda Allen, but more advisory than active. He's on the first floor of Reynolds, first left as you walk in from the Science Complex.)
Julia Baldwin - CIS Liaison (On the first floor of Reynolds, first left as you walk in the front. Not there to help you with your course.)
Rick Macklem - Senior Systems Analyst? (Don't bug him.) (Rick and James manage the CIS Department's computer infrastructure)
James Stark - Systems Analyst (Don't bug him, generally.)
Debra Byart - Undergraduate Program Assistant (Questions about CIS department policy/procedure should probably come to her; her office is on the right on the second floor, coming from the elevator.)
Sheryl Beauchamp - Graduate Program Assistant (Self explanatory, her office is in the middle on the second floor.)
Pamela Varga - Assistant to the Chair (Self explanatory. Her office is an antechamer to Deb's office. She's on the left.)
Some general CIS related websites:
http://www.cis.uoguelph.ca (general CIS departmental website)
http://teachweb.cis.uoguelph.ca (an index of course related pages. Seems kind of forbidden at the moment)
http://moodle.cis.uoguelph.ca (a course-management tool similar to Blackboard or Desire2Learn, but open sourced and used by CIS profs)
http://cisters.ca (Network with other females and diversity-sensitive individuals in computing through fun and inspiring events!)
http://roboticon.socis.ca (The Roboticon Wiki)
And a list of CIS Related servers (all are *.cis.uoguelph.ca unless otherwise specified)
accessible from the outside world:
teddie.socis.ca - You need to sign up with our sysadmin. username will be your uoguelph username
general.uoguelph.ca - uoguelph username / webadvisor password to log in - it's a scary machine though. Try hitting backspace.
accessible from campus only: (or by logging into one of the upper two, then into these)
potter - uoguelph username / student number to log in (may not work until semester has begun)
granger - same as above
longbottom - same as above
weasley - same as above
snape/cisfs - these are separate IPs, but cisfs reports its $HOSTNAME as 'snape'.. - a SunOS box, same logins as above
not to be logged into by undergrads:
dumbledore - open to SSH but we don't have accounts
snowhite - a webserver
hebb - a webserver (Dave Calvert and Deb Stacey store course material on hebb)
teachweb - webserver (Many courses are hosted on this, but all seems for be Forbidden at the moment)
svn - used for classes that make use of svn in coursework
norberta - Who knows? No login, no wget, no telnet.
fluffy - Who knows? No login, no wget, no telnet.
diggory - Who knows? No login, no wget, no telnet.
q - appears to be turned off
Now for the meat of the thing: Some course descriptions!
This seems like the best way to include this. I went through and sorted the profs by "when you'll probably run into them in a class" and added some short descriptions for classes. The formatting looks kind of crummy, but decide for youself. It was intended to replace the above list, but due to its lack of pretty, I left the original list as it was.
The "semester numbers" are more just to show the progression / split by semester than an actual value. Co-op messes with them a bit, and I generally haven't counted the first 'open' summer as a semester. Again, as we've seen above, I am a person who makes many mistakes, so take what you read with a grain of salt -- but you might like to see a list and a plain-english description of what the content of each of the courses up to third year are. These will obviously be coloured by my opinion a bit.
Semester 1:
CIS 1500: Introductory Programming
Probably Michael Wirth
This course is basic C stuff, used to show basic programming stuff. Control structures, loops, introductory pointers, and functions.
MATH 1200: Calculus I
Probably Jack Wiener (*not a CIS prof, just someone pretty much everyone gets taught by*)
Re-cap of / extension to high school math: Run through first principles, then review/extend differentiation, head into integration (but keep it fairly straightforward), and give you a handful of proofs to be familiar with. Covers all the bases.
Semester 2:
CIS 2500: Intermediate Programming
Either Dave Calvert or Mark Wineberg
In my mind, this is a class about pointers and getting your hands wet. In 1500 you wrote toy programs by even the most forgiving definition, whereas here you'll find out about malloc(), the stack, and be introduced to some more advanced topics like Abstract Data Types and parsing.
CIS 1910: Discrete Structures in Computing
Probably David Chiu
Basic CIS Math. Binary logic, predicate logic, truth tables, de morgan's law, some basic matrices, the simplest recurrence relations ever, and inductive logic.
Semester 3:
CIS 2520: Data Structures (building data types in C, ingraining pointers into your mind)
Xining Li or (not this year) Dave McCaughan
Abstract Data Types and recursion. You will (hopefully) build a List, Hash Table, Binary Tree, and Graph ADT, and learn about operations on some of them (like minimal spanning trees, depth first searches, hash functions), and come away with a better notion of recursion and most importantly, pointers. If you don't 'get' pointers coming out of this course, you'll probably be in for trouble.
CIS 2030: Microcomputing
Probably Dilip Banerji, sometimes Gary Grewal
68k assembly. I've got a bit to write about this one. The secret hard parts of this course are: the DUART/DMA, the "MOVEM" command (know it!), and questions about caching/cache timing in very particular situations. You'll spend the first 8 weeks learning the most basic things in the world and start worrying about the details, then in the last month of the course you'll have many new and complex things to think about and know for the exam. This course invariably occurs at 8:30 AM on Monday, Wednesday, Friday, and it's easy to think Banerji doesn't know what he's doing. But he does. Going to this course feels awful, but it's seriously a worthwhile endeavour that will remove large quanitities of pain from your life and make you a better programmer.
A second mandatory notice is: Do next week's lab in this week's lab (this goes for most labs in CIS). They are designed for you to be a week ahead, not on time. If you're just doing this week's lab during this week's lab, you'll lose serious marks, or not get it marked at all. There just is not sufficient time to do each week's lab during it, and _also_ get everyone marked.
CIS 2910: Discrete Structures in Computing
This year it's Pascal Matsakis, but it's often Joe Sawada
Harder CIS Math. This overlaps with Data Structures a bit, and for good reason. You'll learn considerably more about proofs, recurrence relations, state machines/finite automata, and the mathematical theory of operations on data structures. (like graph and tree operations) - You really cover a lot of ground in this class.
CIS 2430: Object Oriented Programming
Probably Fei Song this year, but in the past has been Judi McCuaig
This is a Java course, where you learn the principles of Object Orientation and are exposed to concepts like polymorphism, UML, unit testing, and design patterns. Also, you'll learn how to use the java docs. (which are one of the easiest things in the world)
Semester 4:
CIS 3110: Operating Systems
Probably Wlodek Dobosiewicz
You use C to interact with UNIX. Some topics at a glance are threads, shared Memory, basic networking, processes, interprocess communication. You do neat things.
CIS 3120: Digital Systems
Probably Gary Grewal
Excellent introduction to digital stuff. Basics of Transistors, Karnaugh Maps, circuit design (start with transistors and climb up to a decent 8-bit ALU), Computer Aided Design of circuits, FPGAs and other cool things too.
CIS 3490: The Analysis and Design of Computer Algorithms
Probably Fangju Wang
You do a lot of recurrence relations. Learn about Omega/O/Theta notation (this is 'more advanced' big O notation), learn the concept of dynamic Programming, what the heck p v np means, and methods of solving problems (like divide and conquer, reduce and conquer, brute force, etc) - it's very hard to consistently attend this course.
CIS 2750: Software Systems Development and Integration
I've heard of it taught by Dave McCaughan, Dave Calvert, and Bill Gardner -- it's Professor Gardner this year.
"Abandon all hope, ye who enter here" -- This course is like being told to draw a picture, but being given descriptions of 1/4th of the picture at a time, and having no decent eraser. You will create something (probably in C), then make something else that uses the first thing, and a third which uses the first two, and a fourth which uses the earlier three. If there is a problem in the first assignment, it _will_ come back to bite you down the road. It's a very fun, difficult course, and afterward, you'll be a much more competent programmer.
Semester 5:
CIS 3750: System Analysis and Design in Applications
Probably Judi McCuaig
This course is built around group work. You'll have to work with a team of your peers to bring software from concept to completion, and have to deal with aspects of working in a larger team, real world design, making steady progress forward, managing the software lifecycle (burn-down rates, etc), and test/documentation. This gives you a full size mini software cycle in a box, and is another hard, but fun course. (I haven't taken it or any others from here on yet, so descriptions are about to get sparse! <_<)
CIS 2460: Modelling of Computer Systems
Usually Wineberg, this year it's Dobo
Traditionally a it's like a stats class where you use computers. There's been lots of difficult assignments which keep you up late at night every two weeks and if you don't remember a trivial property of a geometric distribution you could be in trouble. Who knows how Dobo will teach it though? Maybe we'll do some networking.
CIS 3530: Data Base Systems and Concepts
Probably Charlie Obimbo
Theory and Practice of Database design. There's a lot of math you can learn about Databases, and there's some hard questions to be answered, about optimization and complexity. I'm very uncertain beyond that.
CIS 3210: Computer Networks
Usually Dobo
You learn to understand the networking stack and some protocols, to my knowledge.
CIS 3000: Social Implications of Computing
Traditionally Blair Nonnecke, this year it's David Swayne
More reading and writing than anything else -- this course is about the effects computing has on the world around us, be they ethical, cultural, or what-have-you. I've heard it's a great course.
Semester 6
--While it isn't exactly an accurate depiction of your "Semester 6", I'll finish out listing the 3xxx courses -- but remember, I haven't taken any of these. Only heard tales.
CIS 3760: Software Engineering
Probably Deb Stacey
Similar in style but different in content to CIS 3750, this course is heavily more about design patterns and methodologies than analysis/getting it done at a steady rate. In the future I think the order of these two courses will be up to the student taking them.
CIS 3620: Programming Language Foundations
Being taught by Obimbo this year
Automata, context free grammars, markov rules, and a lot about the theory of parsing and formal languages. A prerequisite for Compilers, but _always seems to insistently conflict with the mandatory 3750 labs, what the hell_ - though I think we've done our best to fix that going forward.
CIS 3700: Introduction to Intelligent Systems
I totally don't know who teaches this. I don't think I've ever heard anyone mention it. It's an AI course - there's a good possibility this is taught by Kremer. Teaches you some of the basics of the world of artificial intelligence, in a very broad manner.
And two courses we can't take for credit unless something funky is going on:
CIS 1000, CIS 1200: Introduction to Computer Applications, and Introduction to Computing, respectively
Pretty likely they're being taught by Allan Dyer
They're basic introductions to computing that very lightly touch on programming. In both, you do a large number of assignments which familiarize and prove your familiarity with the applications and utilities taught about in class. CIS 1200 gets into some Javascript before the end.
Okay, that's that. I think anyone who needs to know about 4xxx courses will know what they're doing already. That said, if anyone disagrees with, wishes to expand upon, found an error in, or "insert verbal clause here with regard to" anything here, please post and we'll make it a better resource. :D
And again, thank you to everyone who already has.
---
Wyatt Carss
http://wcarss.blogspot.com
- Login to post comments

Wow Wyatt, this post is
Wow Wyatt, this post is awesome. I'm really really impressed - it must have taken a lot of time to outline it all. Thanks :)
--------------------------
Robyn (Robert) Smith
Honours Bachelor of Computing
President, Society of Computing and Information Science
Great Work
Great job Wyatt, your efforts will certainly not be forgotten, and I do believe that this post deserves to be stickied. Webmaster Powers GO!
The Earth 2650 Project:
www.freewebs.com/e2650p
shamed into fixing the link
Thanks for forcing me to fix that broken link Wyatt.... been procrastinating on that the entire semester. My webspace link should pull up my research website now.
Please fix the spelling of my name? McCuaig
Oh.. and Pascal is Pascal Matsakis.... you might want to look up who Blaise Pascal is, just for grins.
Judi
d'oh!
I knew _both_ of those, and brainfarted pretty humorously. Thank you for the correction :D
---
Wyatt Carss
http://wcarss.blogspot.com
I don't know if this was
I don't know if this was intentional or not, but the email link to the sysadmin you posted just links to @socis.ca... If this was intentional so our sysadmin does not get even more inundated by spam bots, might I suggest just text with no link.
---
Jordan Kapp
Fourth Year - BA(G)/CIS
Canadian Forces Regular Officer - Aerospace Control Officer
Unintentional
Good catch - I wasn't completely certain it was 'admin@' when I wrote the post, and that got left unfixed.
And the 'Shell' page and others already have google-indexed links to the admin account - one more won't hurt.
---
Wyatt Carss
http://wcarss.blogspot.com
Sheryl != Cheryl :) I think
Sheryl != Cheryl :)
I think this will be a great help to many - good work!
--
Andrew
Stefan Kremer != Stephan
Stefan Kremer != Stephan Kremer
Haha! (and more)
I'm just full of tiny errors :P - Thank you to everyone for finding ways to improve this! (if you see anything that doesn't seem right, be sure to speak up!)
edited and re-edited: made the class list, posted it here, cut it back out and stuck it in up top, after fixing the editing.
---
Wyatt Carss
http://wcarss.blogspot.com
Assoc. Chair
Thanks, Wyatt! You wouldn't have known, but Dr. Wirth has passed the "Associate Chair" torch to me. I have a related web page here: http://www.uoguelph.ca/~gardnerw/assoch/
Students are very welcome to contact me with their concerns.
Wyatt is (still, I think?) your student senator, and I'm in my 2nd year as a CPES senator, so we'll be looking forward to some more constructive rabble-rousing in the year ahead.
I'll correct that! Thanks
And as is seen in Josh's comment below, I did not return to my position in the senate this year, due to the co-op schedule. I'm still interesting in rousing rabble, though. :P
---
Wyatt Carss
http://wcarss.blogspot.com
Hi Everyone, After seeing
Hi Everyone,
After seeing Dr. Gardner's comment, I thought I should introduce myself: My name is Josh Gaber, and I am your Bachelor of Computer Student Senator for the 2009/2010 year, and as such, your student link to the University Senate, the highest governing body on this campus for all matters academic.
In the last two years, Computing & Information Science has seen some major changes to its structure, and there are still more to come. For graduating students, it's important to provide feedback about what you have seen, but it's equally important for new students let people know what they want to see in their 3+ years on this campus. The University of Guelph has more student consultation than most other Universities in Canada, and it's something that we pride ourselves on.
However, you don't have to be involved at the highest level to have a voice. If you wish to provide feedback on anything, you may always contact SOCIS, and they will make sure to direct your input to wherever it belongs. You may also ask them any questions you may have, and they will either answer them or forward them to someone that can.
I watch these forums regularly during the school year, so if you have any academic questions, you may post them on these forums, and there will always be someone available to answer them. Academics are important, and it's always better to ask than to assume.
For everyone joining us this year, I wish you the best, and I hope these 3+ years for you are the best they can possibly be!
Cheers,
Josh Gaber
The introductions thread is
The introductions thread is right below this one. Consider C&P'ing.
---
Jordan Kapp
Fourth Year - BA(G)/CIS
Canadian Forces Regular Officer - Aerospace Control Officer
Wyatt thanks for the CiSters plug
Thanks for mentioning CiSters, Wyatt :)
Melanie Veltman
MSc. Candidate
CISters President
***********************
Idealism increases in direct proportion to one’s distance from the problem.
--- John Galsworthy (1867-1933)
Great topic, good
Great topic, good information in general.
I have a question related to getting software installed on the *.cis.uoguelph.ca machines.
In particular, I would love it if `markdown` was installed so I can generate my readme files for class as opposed to ssh'ing to my home server, running markdown, committing the readme, and checking out my code again.
I realize that installing new software probably isn't common but is there a form/email/person where I can submit a request?
Thanks!
EDIT: Actually, running Markdown from source works fine and we have Perl 5.6+ so this is a non-issue. My question still stands (about getting software installed) so if anyone knows, I would appreciate it!
software in the labs
Software is installed on our lab machines when it is required for coursework. Instructors for courses make requests to the tech-team well in advance of the semester and installations are done during semester break.
If students feel they need a specific piece of software, and it isn't something you can just install locally and use from your own account, I suggest that you talk to the student representative who attends department meetings and have the request brought forward at a department meeting.
I do not recommend emailing such requests directly to the technical staff.
Judi
Ah okay. Thanks for the
Ah okay. Thanks for the info. I can't really think of anything off-hand that I can't run locally, but I will be sure to speak to our student rep.