Instructor: Robin Cockett (ICT 652)
(Office hours: immediately after class or by appointment)
COURSE OUTLINE:
Introduction to Haskell and Prolog.
Functional programming in Haskell:
Functional syntax, pattern matching,Logic programming in Prolog:
Evaluating a program by hand, lazy evaluation
Lists and list comprehension
Datatypes and higher-order programming
Structural induction
Classes and monads
Relation to \lambda-calculus
Predicates, rules, variables
Satisfying goals, unification
Evaluation of rules by hand, cuts
Unification
Relation to theorem proving
EXERCISES AND LAB TESTS (35%)
ASSIGNMENT (10% + bonus):
(Due 28th October) Checkers in Haskell (here): legal moves and
applying moves (5%) the AI will be due 13th November (5%) and is
required in order to enter the checkers tournament (TBA
on-line).
Note: to get an A/A+ in the course you must participate in
this tournament. The best programs from the tutorials then
move into the class tournament. There is a 5% bonus for
reaching the class tournament: winning or running up in the class
tournament is rewarded with another 5% bonus.
EXAMS (55%):
Please find the tutorial notes here ....
Si
Zhang
Melika
Norouzbeygi
Ryan
Allard
Alexanna Little
PREREQUISITES:
You are assumed to be a competent programmer, well-versed in both procedural and object-oriented programming (CPSC 219/233/235 or equivalents), having a firm grasp of fundamental data structures (CPSC 319/331), and possessing the mathematical maturity required for proving elementary mathematical assertions (PHIL 279/377 also useful are CPSC 313/351).
GRADE SCHEME:Each component of the course will be given a percentage grade. The Final Grade will be obtained by computing the weighted average of those percentages and then converting the weighted average to a final letter grade using roughly the conversion scheme below (the instructor reserves the right to curve the grading scheme!):
95-100% | A+ | 80-84% | B+ | 65-69% | C+ | 50-54% | D+ |
90-94% | A | 75-79% | B | 60-64% | C | 40-49% | D |
85-89% | A- | 70-74% | B- | 55-59% | C- | 0-39% | F |
GRADESCOPE AND D2L:
The exams, lab. exams, exercise, and assignments will be marked
using gradescope. To submit your work you will need an
account in gradscope.ca: to create one, if you do not have one go
to "gradescope.ca" and press the "sign up" button (the course
entry code is on the D2L "content" tab). Please use your ucalgary
email to sign up. If you are enrolled in the course
gradescope will automatically identify you as being in the
course. If you have problems contact your TA.
D2L will be used only for recording your marks: this webpage and
gradescope will be used for setting up exercise, tests, and
assignments.
POLICIES:
Late policy: exercises are generally due on Fridays but submissions will continue to be accepted until the Monday. However, these submissions recorded as a "late submission". When assessing your final grade in the whole course, if you are on a grade boundary, this submission history will be considered. Submissions after the Monday's will not be accepted. (Note: any updated time-lines, if required, will be announced in lectures and indicated on this page).
Academic integrity:
My main concern is that you should be learning in this class: if you are cheating you are not learning! Furthermore, you may be setting an unfortunate trend for your future work habits. I regard it as an integral part of my job, as a teacher, to ensure that you approach your work with the right attitude and will muster all the resources at my disposal to achieve this.
When you hand in work to be graded you are saying that it is your
work. For programs this means that you typed in the program,
developed it, and debugged it yourself. If you use
routines from a book or another source you must clearly document
your source. Furthermore, before handing in some
code, you should spend a moment to consider how you had arrived at
that code. If you realize that some of the code which should
have been yours is not then this is the time to come and talk to
me or the TA before you get into trouble. This allows
us to apportion credit appropriately.
Please recall that we are using electronic tools to mark your
assignments: suspiciously similar answers may be automatically
noticed (even if we really don't want to see it!).
Discuss the course material! I strongly encourage
you to discuss all aspect of the course material! Form study
groups for the exams. Your peers are your best
learning resource! When you discuss programming projects do
so "off line" and away from the terminals: a good idea is to do so
on a blackboard which you clean carefully after the
discussion. The golden rule is: after you have
finished such a discussion you must walk away only with what
is in your head!
See the honesty in academics website here.
Enjoy the course.
TEXTS
Chocolatey is
software management automation for Windows that
wraps installers, executables, zips, and scripts
into compiled packages. Chocolatey integrates
w/SCCM, Puppet, Chef, etc. Chocolatey is trusted by
businesses to manage software deployments.
community.chocolatey.org
|