[Dec-23-2024] CMPUT 350 has had its run from 2009-2024. As it won't be offered anymore, I created a zip-file that contains all material (notes, lectures, labs, assignments). I hope that you'll find it useful.
Fall 2023
Instructor: Michael Buro (mburo@... [UofA account])
Lectures: TR 11:00-12:20 CAB 273 (face-to-face, starting Sep-5)
Labs: T 14:00-16:50 CSC 153/159 (face-to-face, starting Sep-12)
Office hours: Thursdays 12:30-13:45 Ath 337 (or send email to instructor or TA)
TAs: Jake Tuero (tuero@...), Curtis Kennedy (ckennedy@...) [UofA accounts]
Labs Lecture Assign. Lecture (AI) (C++/Gfx/AI) Week of Tuesdays (+1) Tues.(+1) Wed.(+2) Thurs.(+3) (Monday) 14:00 - 16:50 | 11:00 22:00 11:00 1. Sep.04 % | L1 L2 R01 2. Sep.11 B0 | L3 L4 R02 3. Sep.18 B1 | L5 A1r L6 R03 4. Sep.25 B2 | L7 L8 R04 5. Oct.02 B3 | L9 TS/A1d/A2r L10 R05 6. Oct.09 B4 | L11 L12 R06 7. Oct.16 B5 | L13 P1/A2d/A3r L14 R07 8. Oct.23 B6 | L15 L16 R08 9. Oct.30 B7 | L17 A3d L18 R09 10. Nov.06 B8 | L19 P2 L20 R10 11 Nov.13 %(Reading Week) 12. Nov.20 B9 | L21 L22 R11 13. Nov.27 B10 | L23 L24 --- 14. Dec.04 P3 CSC 333 2-5pm | L25 P4 L26 REX Legend: Li : lecture i Bj : lab j Rl : reading assignment l Ajr/Ajd : assignment j released / due (Wednesdays 22:00) Ajq/Ajs : assignment j questions / solutions % : no class / lab / reading assignment TS : project team selection (Oct. 4, 22:00) P1 : project proposal (Oct. 18, 22:00) P2 : project progress report (Nov. 8, 22:00) P3 : project presentations (Dec. 5, 14:00) P4 : poject report and software (Dec. 6, 22:00) Final Exam : Dec-20-2023, 14:00-17:00, ED GYM ROWS 18,20; CLOSED BOOK FORMAT Deferred final exam date: Monday, Jan. 8, 2024, 09:45-12:45 (CSC 249)
This course is aimed at undergraduate students interested in learning C++, AI, algorithmic game theory fundamentals, and graphics programming for video games. The course has five parts:
Building fast game engines and smarter AI systems for video games is challenging and fun. This course will give students hands-on experience which can open the door to the video games industry!
Teaching C++, game AI, and OpenGL basics will be interleaved. Each week the lab session and the Thursday lecture will be devoted to C++ and OpenGL programming, and the Tuesday lectures to game AI. This allows us to implement AI algorithms in C++ earlier in the course
Also, instead of the established lecture-lab-assignment-exam routine, in this course we will try something different: the inverted class room. The goal of this teaching philosophy, which has been experimented with extensively in recent years, is to teach students to become independent learners and problem solvers more effectively. The main idea is to replace lecture time that used to be filled with instructors' monologues by more valuable interactive problem solving sessions
In this course we will invert 50% of the lectures:
Benefits:
There will be 3 assignments, 10 marked lab exercises, a team project, and a final exam
Average weekly time investment (averaged over 13 weeks) estimate: ~10.5h
Please visit this page to learn about our interpretation of letter grades
In this course grades will not be curved, they are absolute - closely following these cut points:
≥ 90% A+ ≥ 85% A ≥ 80% A- ≥ 76% B+ ≥ 73% B ≥ 70% B- ≥ 66% C+ ≥ 63% C ≥ 60% C- ≥ 55% D+ ≥ 50% D < 50% F
Each lab session starts with a prep period (1:30h) and ends with a graded lab exercise (1:20h) in which students using a lab computer in CSC 153 or 159 solve C++ programming problems that relate to the previous week's reading assignment and the previous Thursday lecture, and the prep session. Lab problems are to be solved only with the help of course material published on this web page including C/C++ references. Web searches or any other outside help are not permitted. Missed lab exercises are worth 0 marks, but in the end we only consider the best 8 out of 10 lab results. This rule allows students to miss a small number of labs due to exceptional circumstances (illness, conference presentations, sport events, etc.) without losing marks. We won't ask for details
Tips for the labs: study the reading assignment and the respective lecture material. Try to solve the lecture problems again on your computer. During the lab exercise bring up the notes and lecture material. Design your code top-down, driven by test code which you may want to write first. Write your code in small pieces you can easily test. Only proceed when your written code compiles to avoid getting swamped by pages of error messages later
Assignments are composed of AI-related questions and medium-sized programming tasks. All used sources have to be listed. Solutions have to be handed in by 22:00 on the due dates electronically via eClass
Each student will be allowed AT MOST ONE assignment submission that is late by at most 24 hours. For such late assignments, 30% of the achievable marks will be deducted (e.g., if the mark total is 57, 17.1 marks will be deducted, capped at 0). Any subsequent late submission will receive 0 marks - as will submissions that are late by more than 24 hours. Assignment marking related questions will be addressed by the TAs. You need to contact them within 2 days after the marked assignments have been returned. Later inquiries will be ignored.
As the weight of missed assignments is not moved to other course components, we recommend to start working on assignments right away to minimize the chance of getting 0 marks in case of an unforeseen event
Project groups consisting of 4 (ideal) or 3 (the exception) students who will work together on a video game AI project. Teams will write a StarCraft 2 bot based on the C++ game API Blizzard provides. At the end of the course we will use the CactusValleyLE, BelShirVestigeLE, and ProximaStationLE maps to run a tournament between all StarCrat 2 bots. Around 10% of the project marks will depend on how well bots do in the tournament
To get started have a look at Tutorials 1-3 here. This helps you build a rudimentary bot that does some resource gathering and Marine building
To prepare your bot to work with our tournament software clone this git repository and follow the instructions
Each team needs to setup a (private) github/bitbucket repository for the project and give the TAs access, implement and test modules, gather performance statistics, and describe their work in a project report and a presentation
When selecting teams you have to make sure that there is at least one 1h time slot each week in which all team members can attend a group meeting (possibly online)
Pick your teammates and submit text file ts.txt containing a list of team members, your bot name, and a one line (tentative) project description by the TS deadline above. Also, submit a screenshot of the sample bot in action which your team built following the SC2 tutorial mentioned above. In the text file also explain what we are supposed to see in the screenshot
Only one eClass submission per team, please
Each team has to submit project proposal pdf file prop.pdf on eClass (see P1 deadline above). The format is 1-page, 12pt proportional font, ≤ 2.5cm margins. The document must motivate your project, describe its goals and how to achieve them. Like for TS, please only submit one pdf file per team
Also, all private team github repositories need to be in place, with the TAs having access. Our github ids are tuero and curtiskennedy
Via eClass by the P2 deadline, each team has to submit once a report (prep.pdf) that describes your project progress (1/3 of the proposed work done), obstacles you ran into, how to overcome them, possible revisions of your project goals, and a breakdown of work already done by whom. The format is 1-page pdf, 12pt proportional font, ≤ 2.5cm margins
Teams that don't present their work will receive 0 marks for the presentation
Each team has to submit project report and software archive project.zip on eClass (see P4 deadline above). Late submissions will not be accepted and will result in 0 marks for software functionality and the report
Only submit once per team. The file must not be bigger than 30 MB (in particular, it shouldn't contain executables)
Contents of project.zip :
Make sure your code compiles without warnings and does not crash. Lots of marks will be deducted if this is not the case!
The project report is a more in-depth document which you would use to convey any information about your project. It should have at least the following sections:
Both the presentation and the report are primarily means by which you can communicate your results. As such, you should focus on whatever you feel is significant that we should know about
If there is evidence of lopsided project work distributions early on, bring it to the instructors attention!
The final 3h exam will cover all course material:
The final exam question format will be similar to reading, lab, and programming assignment questions, but focus more on concepts. Also, questions on the AI lecture parts will have higher probability (see the "final" reading assignment)
To prepare for the exam, read the lecture material and then try to answer all reading/assignment/lab questions *before* looking up solutions. Also make sure that you understand the discussed algorithms work and what properties they have. Forming study groups is highly recommended
The University of Alberta is committed to the highest standards of academic integrity and honesty. Students are expected to be familiar with these standards regarding academic honesty and to uphold the policies of the University in this respect. Students are particularly urged to familiarize themselves with the provisions of the Code of Student Behaviour and avoid any behaviour which could potentially result in suspicions of cheating, plagiarism, misrepresentation of facts and/or participation in an offence. Academic dishonesty is a serious offence and can result in suspension or expulsion from the University (GFC 29 SEP 2003)
All forms of dishonesty are unacceptable at the University. Any offence will be reported to the Associate Dean of Science who will determine the disciplinary action to be taken. Cheating, plagiarism and misrepresentation of facts are serious offences. Anyone who engages in these practices will receive a grade of zero for the work in question and no opportunity will be given to replace the grade or redistribute the weights. As well, in the Faculty of Science, the sanction for cheating on any examination will include a disciplinary failing grade (NO EXCEPTIONS) and senior students should expect a period of suspension or expulsion from the University of Alberta
Students are expected to familiarize themselves with the Academic Integrity resources (covering the topics of cheating, collaboration, plagiarism, and substantial assistance) on the website of the Office of the Dean of Students
If you want to use a git repository for storing your course work (not related your project) make sure it is private. You also must not share your repository with fellow students. Keep in mind that it is easy to find code similarities with automated tools ...
Unless otherwise noted, the CS Department Policies are in effect
Also, using generative AI tools such as chatGPT or github-copilot constitutes plagiarism in this course - as the main objectives of the course are for students to learn to write C++ code and solve problems independently
In this course we use the "Consultation" model: students are encouraged to discuss and solve problem sets in small groups to speed up learning and stimulate idea exchange. In the end, however, students must write down their own solutions and be able to solve similar problems independently
Regardless of the collaboration method allowed, you must always properly acknowledge the sources you used and people you worked with. Failure to give proper credit is considered plagiarism. In general, academic dishonesty is a serious offence and can result in suspension or expulsion from the University
Your instructors reserve the right to give you an exam (oral, written, or both) or ask for a software demonstration to determine the degree that you participated in the making of the deliverable, and how well you understand what was submitted. For example, you may be asked to explain any code that was submitted and why you choose to write it that way. This may impact the mark that you receive for the deliverable
Note that this potential additional questioning about your deliverable is part of the assessment process, both summative (for marks) and formative (for feedback to you and us). It is intended to give us additional information about what you have learned. So, whenever you submit a deliverable, especially if you collaborate, you should be prepared for an individual inspection/walkthrough in which you explain what every line of your code, assignment, design, documentation etc. does and why you chose to write it that way
Last modified on
; you are visitor #
since Jul/31/2023