CAS 1MA3: Computer Based Problem Solving - Fall 2012

Outline

Announcements: We have received ethics approval to conduct six experiments in tablet-based, interactive learning as part of 1MA3 this year. I would like to thank the undergrads who developed the apps for this: Wenqiang Chen, Adrian Dominico, David Elsonbaty, and Rhett Amin, and I'm sure they would like to thank Curtis D'Alves for all his help, and all of the Outreach volunteers who laid the foundation for these experiments, and provided their feedback on the apps. What this means to you, is that you get to be the first people to benefit from these apps, and you will get to see an experiment from the other end of the microscope. You will also get a bonus just for showing up, even if you do not opt in to the experiment. Details of how this will work, including how your information, including whether you choose to participate will be posted on Avenue.

Labs and tutorials start September 10th. Labs and tutorials will cover the same material, and it is important that you are registered in, and attend, a tutorial before a lab if you want to see material in the right order. If you have a laptop you plan to use for homework, we will have drop-in sessions in the drop-in centre where you can get help installing the (free) software you will need. If you want to get started, try installing the Haskell Platform, following the instructions for your operating system. We will be mixing up presentation styles, including slides, discussions, problem solving in small and large groups, and even games whose connection to the course will be deliberately obscure. If you have a conflict with any part of the course, or have your lab before your tutorial, please try to get it changed, and if that is not possible, talk to the instructor or a TA, and we will figure something out.

Calendar Description

A first course in computer science, focusing on the practice of problem solving, in the context of interesting software applications. Problem formulation, problem decomposition, procedural formulation of problem solution.

Anti-Objective

This is not a course about learning to use specific software or programming languages. You will have to learn some aspects of the language Haskell, but the topics have been chosen for their relevance to problem solving, not to getting a job programming Haskell.

Course Objective

This is a course for people who want to know what Computer Science is about, either for general interest, or because they plan to do a degree or minor in CS. No previous experience is required, but some problems will be structured in such a way that more experienced students will be able to learn something by peeking inside.

Textbook

Haskell: the Craft of Functional Programming, Simon Thompson. (Third edition recommended, but any edition will be ok.)

Instructor

Christopher Anand, ITB-213, x24895. anandc (circled a) (name of university) (country). I will be available for at least half an hour after class in the Atrium (on the north/Tim Horton side of the building). If that does not work, we can find another time via Avenue or email.

Lectures: MDCL/1105, 2:30, Tues, Thurs, Fri.

Labs/Tutorials: BSB/249, check your schedule, but it will be Monday or Tuesday.

TAs
Kevin Browne (grad TA, see Avenue for contact info, including ETB drop-in centre schedule)
Ashton Rankin (see Avenue for contact info, including ETB drop-in centre schedule)
Curtis D'Alves (see Avenue for contact info, including ETB drop-in centre schedule)
Wenqiang Chen (see Avenue for contact info, including ETB drop-in centre schedule)


Schedule and Evaluation

  • 40 - 4 midterms during class time (Sept 20, Oct 11, Oct 25, Nov 15)
  • 10 - lab work, including oral explanation of strategy and results to TAs and instructor
    - - Sept 24 - identifying divide, conquer, combine
    - - Oct 29 - turn a list of numbers into a polynomial tree, and turn that into machine language)
  • 10 - assignments
  • 5 - avenue quiz completion by (whether answers are correct or rongw)
  • 5 - lab/tutorial participation
  • 30 - final exam
  • 3 - bonus for showing up for special tutorials/labs
  • 1 - draw a striped circle in assembly language (bonus)
  • 5 - write a code generator in Haskell for assembly language targeted to drawing 2d scene graph in assembly code (crazy-hard bonus)
  • Contact Kevin or Dr Anand if you get sick or have another conflict with any exam or assignment.

    Topics

    Last year we didn't get to finish all the topics we wanted to, so I am dropping a few, but I hope we will get to see a few more examples. Remember, though, that with a few exceptions, the examples do not matter. We are trying to teach you the basic process of problem solving with computers, and the ways we analyse both problems and solutions. The basic idea is simple: how much information is there, and how many steps are there to go through. The Divide and Conquer approach is a recipe to follow which almost gives you the solution. We will work hard on really understanding this in the first half of the course. In the second half, we will get a close-up view of how computers solve problems translating your big problem-solving strategy down into a small set of simple operations which are repeated as often as we required (potentially trillions of times to make a picture) and which, fortunately, happen real fast.

    Whatever your program of study, I hope you will see connections with problems you will face. But you are welcome to talk to me or Kevin during office hours about your reason for wanting to know about computer science, and we may be able to turn it into a new example we use in class. Last year, several students told me that they really appreciated this aspect of the course. To be fair, I also had some upper-year students from other departments say 1MA3 was a lot of work for them, because it was so different. But evidently it was worth the effort, because, in the end, they did very well on the final exam.

  • Problem Solving Strategies
  • Divide and Conquer
  • Tower of Hanoi - defining a language to capture
  • Searching in a list
  • Sorting a list
  • Calculating Derivatives
  • Greedy
  • Finding Shortest Paths
  • Getting to the Bottom of Things (Newtons Method)
  • Binary Numbers and Exploding Rockets
  • How a computer works (simplified picture of a Central Processing Unit)
  • Translating an idea into a computer program
  • Drawing Pictures the Hard Way (using the machine's language)
  • Drawing Pictures the Easy Way (using an abstract language and translator)
  • Really fun picture drawing, using Gloss.
  • Haskell Resources

    The focus of this course is on problem solving, not programming, but our experience is that it is very hard to know if you are doing things right unless you either have a personal tutor sitting beside you at all times, or actually write functions which you can test. If you have a personal tutor, or, even better, a genie in a bottle, then you are all set. Otherwise, we recommend trying Haskell on-line or setting it up on your computer so that you can test what you know:
  • Web-based interactive tutorial.
  • Haskell Platform, the best way to download a compiler.
  • Tutorials, News, etc.
  • Library Reference
  • Gloss picturing tools.
  • ACADEMIC INTEGRITY

    You are expected to exhibit honesty and use ethical behaviour in all aspects of the learning process. Academic credentials you earn are rooted in principles of honesty and academic integrity. Academic dishonesty is to knowingly act or fail to act in a way that results or could result in unearned academic credit or advantage. This behaviour can result in serious consequences, e.g. the grade of zero on an assignment, loss of credit with a notation on the transcript (notation reads: "Grade of F assigned for academic dishonesty"), and/or suspension or expulsion from the university.
    It is your responsibility to understand what constitutes academic dishonesty. For information on the various types of academic dishonesty please refer to the Academic Integrity Policy, located at http://www.mcmaster.ca/academicintegrity.
    The following illustrates only three forms of academic dishonesty: 1. Plagiarism, e.g. the submission of work that is not one's own or for which other credit has been obtained. 2. Improper collaboration in group work. 3. Copying or using unauthorized aids in tests and examinations.

    If in doubt, ask the instructor how this applies to your work.

    TURNITIN.COM

    In this course we reserve the right to use a web-based service (Turnitin.com) to reveal plagiarism. Students will be expected to submit their work electronically to Turnitin.com and in hard copy so that it can be checked for academic dishonesty. Students who do not wish to submit their work to Turnitin.com must still submit a copy to the instructor. No penalty will be assigned to a student who does not submit work to Turnitin.com. All submitted work is subject to normal verification that standards of academic integrity have been upheld (e.g., on-line search, etc.). To see the Turnitin.com Policy, please go to www.mcmaster.ca/academicintegrity

    Personal Information

    In this course we will be using subversion, email and other on-line discussion fora. Students should be aware that, when they access the electronic components of this course, private information such as first and last names, user names for the McMaster e-mail accounts, and program affiliation may become apparent to all other students in the same course. The available information is dependent on the technology used. Continuation in this course will be deemed consent to this disclosure. If you have any questions or concerns about such disclosure please discuss this with the course instructor.

    Possible Changes

    The instructor and university reserve the right to modify elements of the course during the term. The university may change the dates and deadlines for any or all courses in extreme circumstances. If either type of modification becomes necessary, reasonable notice and communication with the students will be given with explanation and the opportunity to comment on changes. It is the responsibility of the student to check their McMaster email and course websites weekly during the term and to note any changes.xsxs