Instructor: Dr Greg Butler, gregb@cs.concordia.ca
Tutor: Bahman Zamani, b_zamani@cs.concordia.ca
Coordinator: Dr Joey Paquet, paquet@cs.concordia.ca
This course follows the same format and syllabus as Dr Paquet's course in Fall 2006:
http://newton.cs.concordia.ca/~paquet/wiki/index.php/SOEN341_fall_2006_section_H
We will follow the same schedule for the quizzes, homework assignments, and the project, with the same
marking schemes as well. However, the topic of our project will be different.
2007-05-04:
Marks for Assigments and Project
2007-04-16:
Marks for Quiz 3
2007-04-10:
Project Deliverable 4 the demonstration will be done on Wednesday April 18, 2007.
Bring prepared a powerpoint presentation with the three items included in the presentation:
(1) Individual contributions (2) Project features (3) Outcomes.
Be prepared to demo your system for (2) Project features as well.
Presentation, demo, and set up time is 30 minutes. This will allow 15 minutes for questions and discussion.
Not all members of the team need to attend: but everyone's induvidual contribution must be part
of the presentation.
Schedule is:
8:45 Group 1 Sami ABBOUD et al.
9:30 Group 2 Sami AL-KHUDRI et al.
10:15 Group 3 Melanie BYFORD et al.
11:00 Group 4 Joshua ZIMLER et al.
11:45 Group 5 Cyril ABI NADER et al.
2007-03-20:
Marks for Quiz 2
Quiz 3 will take place in class on Friday 30th March 2007.
It will be a 60 minute quiz
beginning at 10:25am. It will cover the material indicated on the wiki. There will be
true/false questions, fill in the missing word(s) question, short answer questions. It is
closed book.
Project Deliverable 4 the demonstration will be done on Wednesday April 18, 2007.
A time slot of 45 minutes will be scheduled for each team in the morning.
Project Deliverable 5 the individual report
is due electronically by midnight Sunday 22 April 2007.
2007-03-14:
Project Deliverable 2 is now due at midnight Friday 23 March 2007 after the demo.
2007-03-07:
Homework Assignment 3 due electronically by
midnight Sunday 01 April 2007.
Project Deliverable 3 due electronically by
midnight Sunday 22 April 2007.
2007-02-14:
Marks for Quiz 1
2007-02-09:
Quiz 2 will take place in class on Friday 2nd March 2007.
It will be a 60 minute quiz
beginning at 10:25am. It will cover the material indicated on the wiki. There will be
true/false questions, fill in the missing word(s) question, short answer questions. It is
closed book.
Homework Assignment 2 due electronically by
midnight Sunday 04 March 2007.
Project Deliverable 2 due electronically by
midnight Sunday 18 March 2007.
2007-01-24:
Office hours set for Thursdays at 12noon, or by appointment.
2007-01-19:
Quiz 1 will take place in class on Friday 26th January 2007.
It will be a 60 minute quiz
beginning at 10:25am. It will cover the material indicated on the wiki. There will be
true/false questions, fill in the missing word(s) question, short answer questions. It is
closed book.
2007-01-10:
Homework Assignment 1 due electronically by
midnight Sunday 28 January 2007.
Project Deliverable 1 due electronically by
midnight Sunday 11 February 2007.
Project Description (see below)
2007-01-06:
Week 1 slides: but read the wiki as primary source of information.
Course outline
Project Deliverable Number 0
due Friday 12 January 2007 in Tutorial or by email to 'gregb'.
2007-01-03:
The project for this semester is based on the game of Sudoku, for which there is plenty of information on the web. I suggest everyone play a few games of Sudoku to familiarise themselves with it.
There are three programs required for the project:
The project is an incremental project involving three versions of these programs:
For the third and last version, each group should also integrate the three programs into one Sudoku game application.
Sudoku Game
Features of the game that users need are:
the ability to input an entry in a square.
In general, the game does not check whether the entry violates the rules, or is incorrect
(if the game knows the correct answer). However, there could be a way for the user to select
such a feature.
Most users wish to take notes about the possible entries in each square, usually by writing very small
in the square. Usually they indicate which numbers 1..9 are possible, or impossible.
Either provide a general facility for notes in a square, or allow users to track each of
1..9 for each square as possible or not possible as an entry.
Sometimes, it comes down to pursuing two possible entries for one square, to see which entry leads to
a contradiction: then the correct entry is the other one. To do this, the user must be able to request
two new "child" games be created from the current situation: one where the square entry is choice 1, and
the other where the square entry is choice 2. The other information in squares is not changed from
the "parent" game. Note that in very bad cases, the user may need to create child games rom child games
too.
Sudoku Advisor
Features of the Advisor are related to how many heuristics or rules you wish to incorporate,
and whether the heuristics are hard-coded in Java or can be described as a rule and
then read in by the Advisor.
A minimal version should check the three rules of the game, and not allow entries which
violate the rules.
A variant of this, if you know the correct answer, is to not allow incorrect entries.
If you play the game, or read articles about the game, then you can discover other heuristics
as well, to incorporate into the advisor.
The advisor can act in a reactive mode, ie a user requests help, then the advisor offers a hint
(ie an entry) or the advisor checks whether any existing entries violate the rules.
The advisor can also be proactive, and essentially generate as many new entries as possible
using its set of heuristics.
In the ideal case, the heuristics should be strong enough to provide a complete answer to each
game when the advisor works in proactive mode.
Sudoku Generator
Features of the Generator are related to how pragmatic a solution is desired:
a simple solution is to collect a list of about 10 games with solutions (from some source)
for each of the difficulty levels: gentle, moderate, tough, diabolical.
to get a greater number of solutions, but still be pragmatic, is to generate permutations
of the games and answers in your lists above.
Allowable permutations are (a) any permutation of the entries 1..9; (b) any swap of two rows
which lie in the same subgrid; (c) any swap of two columns which lie in the same subgrid;
and (d) any permutation of subgrids by row permutations or column permutations.
a full solution is to be able to generate all solutions in some methodical way.
It is really beyond the scope of this course for you to develop such an algorithm,
but if you find a good description of an algorithm then you can perhaps implement it.