Foreword

In my teaching methodologies, I employ a number of different techniques. This document will explain to you what these course components mean, and why they are organized the way they are. It will also teach you the policies I have around these components, and why the policy exists.

Academic Integrity

Academic integrity, in all things, is a key feature of my courses. Most courses are now "locked" until you have completed the current set of academic integrity requirements (common to most SMCS courses.) Until you agree to abide by our academic integrity regulations, and demonstrate to us that you understand what they are about, you won't be able to interact with the course. There is no relief from any missed evaluations because you didn't complete this requirement to unlock your course. Once completed, we are then comfortable with proceeding with your work, knowing that if you violate the rules of academic integrity, you were duly cautioned about the results.

Flipped-Classroom Delivery

While at first this may appear to be an online-delivery model for a webcourse, it is absolutely not that! It is a methodology for teaching which, instead of requiring you to attend classes to listen to lectures, the lectures are made available to you online as a component of the course, and you are given flexibility in your "consumption" of these lectures. A traditional lecture requires you to show up at a given time and place, listen to a professor deliver material, watch as they write notes on a board or refer to slideshows, and take notes on what they say. For some people, this works just fine - but for others, it's not such a great way to learn.

Student who benefit from flipped-classroom models are:

Flipped-classroom delivery addresses these items, and it does it well.

This model still provides for one period per week of in-person interaction with your instructor, and sometimes more if review sessions are needed. It allos for testing to take place in a defined period, so that it's not happening randomly and making it easier to miss a test. Sick? No problem. You can review the materials later - but if you're sick with in-class teaching, you need to get someone else to give you their notes, which you hope you can decipher.

Testing is still done in the traditional manner; all that's really changing is the lectures, which most people simply sit and stare at, are no longer an onerous period you must attend here and now - you can flex it to when you're mentally prepared.

Assignments - What are they evaluating, and why do we have them?

Assignments are usually more significant pieces of work, which are used to evaluate your ability to creatively solve complex problems. In Computer Science, you must become an expert problem solver - that's what the discipline is all about. Assignments are the way that we give you larger tasks to complete, and set you free to expand and apply your knowledge.

If you treat assignments as grunt work that is boring, you're already shutting yourself off from the whole essence of the discipline. If you don't enjoy solving problems, then Computer Science might not be the best fit for you - nor would any of the SMCS disciplines, I imagine. This isn't vocational training; this is about bringing you to love what you do, so that you will have a long and rewarding career. To fully realize your potential, you need to become an independent thinker and problem solver; this is why you work on assignments. Sometimes you work with other people - you also need to learn how to integrate with other programmers.

Tests/Midterms

Nobody likes tests or midterms. They're stressful, and they're a lot of work to prepare for. Why do we do this to you?

Tests show us what you can recall from your own mind, without the assistance of reference materials or the Internet. They measure something very different from assignments; with assignments, you have all your resources at your fingertips, you can look anything up - so you are given relatively complex problems to solve.

Tests are assessing your ability to work without resources, demonstrating your ability to grasp fundamental concepts. For me, I do not usually make great leaps in terms of complexity from problems you've seen already into what you do on a test. Now, that doesn't mean every test questions is something you have seen before, word for word - that's silly. What is does mean is that the problems are nowhere near as complex as assignments, and work more with the fundamentals of the topic. We're helping you build, in your brain, a database of fundamental knowledge about a broad range of topics in Computer Science. You won't remember every detail, but you will remember some of it - and when you think about it, you'll know where to look for your answers. Once you see the answers, again, the concepts will be brought to the forefront of your brain. In short, you'll be able to resume working with those concepts much faster than if you had never attempted to remember the concepts in the first place.

Final exams, of course, are just summary examinations for an entire course, and they give us (as instructors) a clearer idea of how much knowledge you acquired during the course. That is why class tests/midterms and final exams tend to have the greatest weight in the course; you're not a very valuable employee if you have to look up every concept, even the most basic, every time you attempt a task.

If I did badly on a test, why can't I just do an extra assignment to make it up?

As you can see from the descriptions above, assignments and tests are measuring different things, and they're measuring them in different ways. It would be a lot like trying to determine if your engine oil of your car needed replacement based on your windshield washer fluid level. The two are completely unrelated. Or, more to the point - it would be like trying to examine a mechanic in their ability to change the spark plugs on a vehicle by looking at how well they put down protective paper pads on the seat and floor of the car. The activities simply aren't the same.

I hope you can understand, and appreciate, why we can't interchange these components.

Labs

Some courses, particularly those in introductory programming, contain labs - these are where you typically come to a lab instruction area and you complete simpler tasks relevant to a topic you've just learned. We now evaluate your lab work based on your output (results) rather than simple presence-in-seat. You are encouraged to attend labs, but you are not requried to do so. Nevertheless, if you never attend a lab, and you show up in an instructor's office at the end of a semester claiming to be completely lost with the entirety of the course, do not expect a lot of sympathy. Labs are where you practice your skills, and where you have access to personnel (me, and upper-level students) who can explain where you go wrong with your coding or your interpretation of instructions. We're there to assist you, but we can only do so if you engage in the lab activities. It's ultimately your choice.

Auxiliary Information

In some courses I will include auxiliary information in the form of documents, or explanatory videos. These may not directly follow the course pedagogy but will help explain some of the concepts mentioned in the course - for example, in Computer Communications I talk about transmission power levels and the inverse square law - but that's a theoretical explanation that's not easy to understand, until you watch a video of me measuring an electromagnetic field and you see the measurement dropoff with distance. These sorts of auxiliary references are there to help you more fully understand some topics and concepts, and while these materials themselves are not directly tested, the concepts they're trying to illustrate are part of the course, and those will be tested.

Summary

In this document, I've endeavoured to explain to you the typical components of a course, and what they're about. Hopefully, you now have a clearer picture of what we are doing when we present a course to you. Ultimately, we seek to do two things:

  1. We want to teach you certain skills that you will need as a Computer Scientist.
  2. We want to teach you, over your university career, how to acquire your own knowledge, integrate it into your work, and synthesize solutions from it.

If you choose to go further in academia, then you'll find that a Master's programme (typically two years) will teach you what research is, how to be involved in it, and how to propose related research, perform it, document it, and present your research results in the form of a thesis, under the supervision of a Ph.D. faculty member who has an established research programme.

Of course, a Ph.D. itself is a five to six-year endeavour that will see you, under the supervision of established Ph.D. faculty, propose your own research topic, perform it, document it, refine your work, and preset that in a much larger thesis form; you will also defend this thesis against scrutiny, as well as demonstrate a comprehensive knowledge of the discipline. You may even have a Master's-level student or students who will work with you on your project.

Whether you choose to continue in academia, or you move into the working world, you will need the ability to acquire, integrate, and synthesize your own knowledge in order to succeed - and that basis is what we aim to provide to you.