Below is a select, representative set of materials that I have developed for the courses I have taught based on my teaching philosophy.
Curriculum development at University of Victoria (UVic) as Assistant Teaching Professor
CSC 110 – Fundamentals of Programming I
The course design and content described below has been reused in the January 2021 offering by another instructor and again in my May 2021 offering. Below is a progression of the development of these materials across terms followed by a short reflection based on student feedback.
(May 2019) – designed course to introduce functions early
Drawing on my experiences teaching CPSC 110 at UBC, I designed this course to introduce user-defined functions before conditions and loops.
The curriculum was designed so that students saw and experimented with the material in three ways in a given week: 1) in lecture, 2) in lab and 3) in assignments. The four midterms were placed 2-3 weeks apart to give students summative feedback on their progress and understanding.
This course redesign included:
- Development of materials for 22 lectures (75 minutes), each containing 3 phases:
- short powerpoint presentations: A short lecture that took approximately a third of the lecture time to explain a concept through images and annotated code examples.
- active-learning component: Students were provided with a lecture starter file which described a set of exercises to be worked through in the the remainder of the class. Students started the problem on their own, followed by an interactive live demoed solution.
- lecture followup: Students were provided with the final materials developed in lecture through the course management system along with some suggested practice exercises.
- Development of 10 labs – The labs were designed as a set of stand-alone exercises that student could work through at their own pace. Labs included tracing exercises and programming problems.
Each lab contained three checkpoints that TAs would mark off as the students completed them. The intent of the checkpoint system was to eliminate lecturing in labs and have students working through problems on their own. The expectation was that students be able to complete the first two checkpoints in lab but in reflection many students completed all three.- Sample specification for lab on count-driven loops: CSC110_Lab4
- Development of 10 assignments – The assignments were designed to be completed within a week and were intended to be a direct application of the material that was covered in lecture and lab that week. When students sought help from myself or the Computer Science Assistance Centre, help was provided by going through a synonymous problem from lecture or lab, encouraging them to understand the concept so that the could complete the assignment problem on their own.
- Sample specification for assignment on count-driven loops: CSC110_Assignment4
(May 2020) – online offering, flipped classroom design
A pre-lecture component was introduced to replace the short lecture component of the previous offering. Students were asked to watch 2-3 short videos and complete a related quiz before coming to lecture. Students were given unlimited attempts on each quiz to encourage them to experiment with and understand the introduced concept before coming to lecture.
During lecture we worked through starter files as was done in the face-to-face offering, leveraging a tablet to support interactive problem-solving.
This course redesign included:
- development of a set of 60 videos (~5-10 minutes in length)
With permission, inspiration and content for these videos was drawn from the University of Toronto (UofT) CSC108 course. While my first instinct was to directly use these already created videos, more content was covered in the UofT offering than is currently covered in the UVic CSC 110 learning outcomes. - integration of an IDE (Wing 101) and testing facility (doctest) to support student problem-solving process and ease transition of online support, with influence from UofT CSC108
- integration of Python’s support for type-hints to replace documentation style representation of inputs/outputs in the problem-solving process, with influence from UofT CSC108
- development of a set of 18 quizzes (~5-10 questions per quiz)
- development of 3 online midterm exams with 3-4 problem-solving, code-writing questions per exam with most questions having 4-6 versions to minimize unauthorized collaborations
- development of 10 new assignments, similar to those in the previous term
- refinement of 10 labs to constrain exercises so that they could be completed during the 2 hour online synchronous lab time and removed checkpoint system as it was not feasible in an online environment
- development of grading scripts to facilitate quantitative and qualitative feedback on student assignment and lab submissions that would integrate with the university learning management system (Course Spaces)
(September 2020) – online offering, flipped classroom at scale
The materials developed in May 2020 were refined in the September offering with the following changes:
- ported materials to a new learning management system (D2L), converting quiz questions where necessary
- updated grading scripts to integrate with D2L
- development of 10 new assignments, similar to those in previous terms
- development of 3 online midterm exams with multiple versions of each question but adding more short-answer questions to assess student understanding of finer details of concepts
- limited pre-lecture quizzes to 4 attempts for the following reasons:
- data indicated students were using a trial/error approach to answering questions
- student elicited feedback suggested if they had limited attempts they “might try harder” on their first attempt
- Sample pre-lecture quizzes:
- Quiz on introduction to count-driven loops: CSC110_QuizCountDrivenLoops
- Quiz on introduction to nested loops: CSC110_QuizNestedLoops
- Sample pre-lecture videos:
- Pre-lecture videos on introduction to count-driven loops:
- Pre-lecture videos on introduction to nested loops:
(May 2021) – reused materials developed in previous terms with the following updates to course materials:
- updated relevant videos, lab and lecture exercises to incorporate Python 3.9 support for type-hints
- development of 10 new assignments, similar to those in previous terms
- development of 3 online midterm exams, leveraging question versions developed in previous terms
Reflection:
- Student experience reports for this course have been largely positive with the transition to a flipped-classroom approach, with many students recognizing and appreciating the benefits of the course design:
- “I was so impressed with the organization of this course! Everything was very clear and laid out in an understandable way which made the transition to online learning much easier. I especially like how lectures were interactive and we could code along with Celina as it helped me to stay engaged.”
- “I liked how we would learn the material before class (pre–lecture videos) and then spend lecture time working on practice problems, implementing and expanding on what we had learned (I liked that Celina would give us time to try the questions for ourselves before providing a solution to check with). Celina gave great explanations with helpful visual aids for how data is connected/stored to values. Quizzes were useful in clarifying general understanding of topics. Labs and assignments were the most helpful, as that was when I could practice implementing all the skills I’ve learned. The discussion forum was helpful for providing a central location for common questions. This course was one of the top online courses I’ve taken.”
- “Very clear in giving directions and teaching the material, so well done! I also greatly appreciated the visual aid of Celina showing her screen while talking through the thought process of problem solving. This greatly helped as I was a complete beginner with everything python and computer science. Also, very thankful for Celina’s enthusiasm in teaching this course, because of this it was hands down one of my favourite classes I’ve taken (Im a biochem major, so completely different field)!”
- The largest challenge in teaching this course was student communication. I attribute this to: the size of the class (~400 students across 2 sections in the September 2020 offering), the largely first-year student population in the course and the online delivery of the course. Students were looking for ways to manage workload, connect with instructors and mitigate stress they were feeling. I provided the following channels for student communication:
- 6 hours of office hours scheduled across 4 days of the week
- question/answer period after each lecture
- weekly forums for students to ask questions – the goal here was to encourage a community with students answering other questions, answer a single question only once, and to ensure fairness with the same information being given to all students.
- email communication used for only personal student situations and emergencies
- Student comments showed they found this support useful:
- “She was always very available for answering questions, either in our class discussion forums or through office hours”
- “I appreciated that there were a lot of office hours. They really helped me do well on my assignments. I liked that we could ask questions on the discussion forums. It was nice to be able to ask questions if I didn’t have time to go to office hours and I liked being able to see other people’s questions as well.”
- In my first-year classes I hold a hardline on assignments deadlines and adhering to a specification as I believe these are important learning outcomes for the courses. This is frustrating for students who make, what appears to them to be a small mistake (naming a file or a function incorrectly), but in fact mistakes like these in a workplace can have serious ramifications. I alleviate the pressure of this policy by having frequent assignments (10 per term worth ~3% each) and at the end of the term dropping their lowest graded submission. Given most students do not make mistakes like this more than once, the policy does not impact their final grade. This is not to diminish the feeling of frustration that the students feel as shown in some comments below. This feedback has prompted me to begin to investigate ways to improve our D2L submission system to give initial rudimentary feedback so that small submission errors can be caught, rectified and resubmitted by the student.
- “Create a better grading scheme that will actually benefit the students learning experience rather than to dismiss their hard work and give them a zero on the spot.”
- “The only thing i didnt get in this course was the function which was named playround. This is because every other function had an underscore to separate words which lead to me reading the name as playground. But this is extremely nit picky.”
(Sep 2022) – moved all assessment content to PrairieLearn to provide students with real-time feedback and ability to resubmit work
- ported pre-lecture quizzes, labs, assignments, practice content and exams to PrairieLearn
Reflection:
- test anxiety with PrairieLearn exam assessments anecdotally reported by teaching assistants
- positive feedback from students on resubmission process
(Sep 2023) – converted lecture exercises to PrairieLearn assessments to allow students to redo them for practice, increased number of midterms from 3 to 5
- increased the amount of practice material
- increased number of exams and reduced their weight to decrease performance pressure
CSC 111 – Fundamentals of Programming with Engineering Applications
Below is a progression of the development of these materials across terms followed by a short reflection based on student feedback.
(January 2020) – development of lecture worksheets
I based my course design of CSC 111 on the worksheet-based lecture style used in APSC 160 (UBC equivalent to CSC 111). I developed worksheets for each lecture, taking a functions-first approach to introduce the students to programming as I used in CSC 110. Exercises from the APSC 160 worksheets were leveraged to create CSC 111 worksheets but largely these were developed from scratch due to the introduction of functions early and the introduction of pointers which were not covered in APSC 160.
This course design included:
- short powerpoint presentations: A short lecture that took approximately a third of the lecture time to explain a concept through images and annotated code examples.
- active-learning component: Students worked through worksheets at their own pace with help from myself and a lecture TA with frequent breaks to discuss common problems as a class. A select set of exercises were handed in to be graded.
- lecture followup: Students were encouraged to complete any unfinished exercises on the worksheet on their own time and solutions to the full worksheets were posted the following day.
- Sample worksheets:
- Introduction to pointers worksheet: 09_Worksheet_PointerTypes
- Introduction to pointers solution: 09_Worksheet_PointerTypes_soln
- Introduction to strings worksheet: 16_Worksheet_Strings
- Introduction to strings solution: 16_Worksheet_Strings_soln
(January 2021) – online offering, flipped classroom design,
Drawing from experiences and lessons learned designing the CSC 110 online offering, CSC 111 was redesigned adding content to support a flipped-classroom approach.
This course redesign included:
-
- pre-lecture component introduced: This component was introduced to replace the short powerpoint presentations of the previous offering. Students were asked to watch 2-3 short videos and complete a related quiz before coming to lecture. Students were given 3 attempts on each quiz to encourage them to experiment with and understand the introduced concept before coming to lecture.
- development of a set of 48 videos (~5-10 minutes in length)
- development of a set of 18 quizzes (~5-10 questions per quiz)
- active-learning component change: During lecture we worked through worksheets designed in the January 2020 offering. In the online format, I allowed students to start each problem on their own and followed up with an interactive demonstration of the solution through screen sharing collecting feedback through the chat feature (largely) and audio.
Due to logistic challenges, worksheets were not handed in for grading. - development of online midterm exams:
- 3 online midterm exams with multiple versions of each question
- consisted of a combination of short-answer and problem-solving questions
- Sample Pre-lecture Videos:
- 3 pre-lecture videos on introduction to pointers:
-
- 2 pre-lecture videos on introduction to strings:
- 3 pre-lecture videos on introduction to pointers:
- Sample Pre-lecture Quizzes:
- Pre-lecture quiz on introduction to pointers: CSC111_QuizPointers
- Pre-lecture quiz on introduction to strings: CSC111_QuizStrings
- pre-lecture component introduced: This component was introduced to replace the short powerpoint presentations of the previous offering. Students were asked to watch 2-3 short videos and complete a related quiz before coming to lecture. Students were given 3 attempts on each quiz to encourage them to experiment with and understand the introduced concept before coming to lecture.
Reflection:
- Based on student feedback about the worksheets in the January 2019 offering I made a point of keeping the worksheets but integrated more problem-solving demonstrations
- “like the inclass worksheets as they help me understand the current material”
- “Worksheets were a great idea for in lecture, keep using them!”
- “Maybe do a bit of coding in class, or do some skeleton code when we are working on the worksheets in class.”
- Student experience reports showed students saw value in the worksheets and the interactive problem-solving during lecture
- “The pre–lecture videos, combined with the examples during lecture were very helpful to my understanding of the material. The labs were also helpful and relevant to the assignments, overall the course structure was excellent! Celina’s lectures are very clear, and she holds many office hours each week for students to get help and you can tell that she genuinely cares about her students. Celina is very prompt at responding to discussion posts and emails, so it is always easy to contact her if you have a question.”
- “I really found the interactive lectures and the extra practice worksheets really helpful! Also, going to office hours helped me understand the missing pieces in my code!”
- “I really liked the pre–lecture videos and quizzes. They really helped me cement my understanding. I also really liked working on the lecture questions together because it’s easier to ask questions.”
- “I really enjoyed her enthusiasm towards “group work” during lectures to achieve a functional code. very effective and more fun than watching a prof type code he already knows”
- The student comments did indicate some understandable frustration with some typos in provided materials. Using TA resources we did attempt to find these issues before the material was released, but given the material was being developed as the course was running not all problems were found. We did however ensure that student grades were never impacted by an error on our part. Thanks to the students who provided feedback we hope to see less of this in the future:
- “Sometimes there were documents or quizzes (pre–lecture) that had incorrect answers and unclear information that made it difficult to study beforehand and grasp the material without consulting external sources. There were also several instances where the assignment documents were incorrect or had to be changed on short notice which tipped me off since I tended to start the assignments right away.”
- Ensuring academic integrity in the online environment was challenging. While we did leverage tools to identify copying of work, we still must rely on time constrained exams to limit student ability to seek help from outside resources. In this class and other online courses that I taught students were not able to navigate back and forth between questions. While I agree this approach creates a stressful exam environment for some, I found that when I did not institute this constraint students were working through the exam together which I could detect by common answers and timestamps. In order to alleviate the stress of this exam navigation constraint, I instituted the following changes to help students manage their time:
- reduced the weight of exam on students’ total grade from in-person offerings
- asked less questions on an exam than I would given in a written setting
- assigned the number of marks for a question to roughly equal the number of minutes students should spend on a question
- more time was estimated for a given question than would have been if given in a written setting
- each exam was provided with an outline with the number of questions and the number of marks each question was worth
- allocated ~10-15 minutes of flex time to account for connectivity issues or to use on a question they needed more time for
- Some students also found the strict assignment submission policy frustrating which I have discussed in the CSC 110 reflection section
CSC 115 – Fundamentals of Programming II
The course design and lecture and lab content developed in 2019 has been reused by other instructors. These materials have been augmented by Dr. Estey with videos and online quizzes over 2020/21 that I leveraged in my 2021 offering. Below is a progression of the development of these materials across terms followed by a short reflection based on student feedback.
(January 2019) – integration of active-learning and reflection components into lecture:
- Students were provided with starter code files that were interleaved with tagged questions. The questions were designed to lead the students through the lecture material and encounter common misconceptions and subsequently clarify concepts through demonstrations and discussion.
- Printed copies of starter code were provided for those who did not have a laptop to allow them to participate with pen and paper.
- Online-polling software (Socrative) was used to gather anonymous responses to questions posed whenever possible. Questions were intended to give the students formative feedback on their understanding of a concept as well as to give me just-in-time feedback on student understanding.
- At the end of each lecture, solutions developed in lecture were posted along with a set of suggested ways to practice and review the material.
(May 2019) – increased number of assessment and decreased the weight of each assessment:
Based on reflections on my previous offering of this course, I took the opportunity in this single-section offering to experiment with more frequent assessments. These assessments came as formative feedback through assignments and lab exercises and summative feedback through midterms and a final exam.
This course redesign included:
-
- Assignments designed to be smaller and more frequent. With 10 assignments worth 2% each, students were working on and submitting an assignment almost every week. Grading was largely automated to give students feedback before their next assignment was due. Assignments were similar to previous offerings but not recycled to minimize the opportunity for plagiarism.
- Labs were redesigned with the check-point system as described in CSC 110 curriculum description. This pilot demonstrated the ability to give some qualitative feedback to students within the lab and allowed TAs to grade them not just on attendance but on completed work. These labs are now reused by other instructors in subsequent terms. This check-point approach has been adopted in other courses by other instructors (CSC 111). Each of the CSC 115 labs consists of:
- A PDF specification often including explanation and UML diagram as an overview. Sample lab specification for a lab using binary trees to introduce inheritance: Lab9
- Fully documented starter code that students would add to as working through exercises
- A tester that did not necessarily have full test coverage but allowed students to ensure basic functionality and adherence to the specification
- The four midterms given were worth 7.5% each and were spread 2-3 weeks apart throughout the term. This summative feedback allowed students to reflect on study strategies and adapt these strategies as needed. It allowed them to correct misconceptions before moving on to new material.
- The curriculum was designed so that students saw and experimented with the material in three ways in a given week: 1) in lecture, 2) in lab and 3) in assignments. The four midterms were placed 2-3 weeks apart to give students some summative feedback on their progress and understanding.
- In an attempt to assess the impact of this approach, students were given the same final exam as the previous term. The following improvements were observed:
- a 5.5% increase in the median score
- a 1.5% decrease in the exam failure rate
- These results are preliminary and not without confounds:
- the previous term was a multi-section course with two different instructors
- the summer 2019 section was much smaller (<100 students) than the sections in the previous term (>160 students)
(January 2020) – multi-section, multi-instructor offering
In this offering I taught one of the 2 sections of this course, sharing materials and coordinating with the other instructor. My contributions to this course were:
- providing lecture content/exercises to co-instructor
- coordination/scheduling of TAs to support the course offering (labs, assignment/midterm grading)
- development of 9 of the 10 new assignments used
- scheduling of 3 midterms written at a common time for all sections to ensure consistent assessment across sections
NOTE: reduced from 4 midterms to 3 midterms in response to student feedback on issues of workload in the previous term.
(May 2021) – online offering
In this offering I leveraged a set of lecture videos and quizzes created by Dr. Estey in his online offerings of the course in developed in May 2020. I assigned the videos (1-2 per lecture, videos 20-30 minutes in length) and quizzes (1-2 questions per quiz) to be completed before each lecture. Students were given 3 graded attempts for a quiz before the deadline but the quizzes were reopened as ungraded practice after the deadline.
While the video content was longer than I have used in my other offerings, the detail did provide an excellent resource for students to go back to as they were working through lab and assignment exercises.
To accommodate the shift to online learning my contribution to the development of this curriculum that I believe will be of use for future offerings (in-person or online) are:
- ported materials to the new learning management system (D2L), converting quiz questions where necessary
- limited pre-lecture quizzes to 3 attempts to encourage watching of the pre-lecture videos as opposed to guessing answers
- updated grading scripts to integrate with D2L
- development of 10 new assignments, similar to those in previous terms
- development of automated testers for the grading of lab submissions as the check-point system was not feasible in an online environment
- development of 3 online midterm exams with multiple versions of question, student traversal between questions was limited
- the exam traversal constraint was a common complaint as it was for the other first-year online courses I taught – see my response/support for this in the CSC 111 reflection section
Reflection:
- This course covers a substantial amount of material and the delivery has evolved to require students to be writing a significant amount of code weekly. The weekly topics build on each other and this can be challenging for students to keep up but for those that do and stay engaged they take their programming skills and understanding of data structures to the next level. Providing students with different views of the material and a different ways to consume the material appeared to help with their learning, allowing them to chose the best avenues for their own personal learning preferences.
- “The prof was good overall. The prelecture videos and quizzes really helped to understand the content before class began, with coding examples completed in class. The activities such as tracing through trees was very helpful before being thrown into coding trees, so I think the prof’s teaching skills are great in that respect.”
- “Throughout the term, Dr.Berg would utilize short videos to teach us concepts. I found these shorter videos helped me understand concepts better than longer videos and easily rewatch them, without losing too much time. In addition, Dr.Berg has office hours almost every weekday of the week. Stopping by office hours were truly a lifesaver. In these sessions, I would ask Dr.Berg various questions about various aspects of the course and receive clarifications. Dr.Berg hosted lectures every Monday and Thursday afternoon. In these lectures, Dr.Berg would recap the highlights from each video, code an example problem and answer any questions. I found attending these lectures/sessions to be extremely helpful to my learning.”
- “I think that my instructor did a good job of explaining the concepts that we learning in the pre–lecture videoes in more detail. The labs were amazingly helpful for learning the concepts. I think I did 90% of my learning in the labs.”
- With lectures sometimes developing/writing code and other times designing algorithms through pictures and pseudocode, those students with weak programming skills from their pre-requisite courses struggled. Given this is not an introductory programming course the intent is to give students experience writing/testing/debugging their own code from a general understanding of an algorithm. For future program development, I believe these students would benefit from support in the form of videos/workshops/exercises to improve these expected skills at the beginning of the course.
- “I would have really appreciated more code writing examples in class. Such as working on a problem rather than focusing on theory. Although I feel like this improved as the course went on and that the theory was really integral to understand the whole picture! I believe overall we just didn’t write enough code together and it wasn’t as smooth of a process as it could have been.”
- While some students found the pre-lecture work time consuming others did see the benefit of this. Given the weight of these course components is small relative to assignments and exams, I see the benefit of retaining these in the future. Consideration is being given to shortening some of the videos and moving the additional video content from pre-lecture required to post-lecture supplements to reduce the perceived workload.
- “The pre–lecture videos as well as the examples we covered during lecture were really helpful.”
- “Good lectures, the examples really helped with understanding. I liked that we did short prerecorded videos before to get the lecture material and then went through demonstrations and examples in class. The zoom polls were very helpful.”
- “She was a great professor, except for the workload for assignments( that sometimes took really long time to finish) made it very stressful, while managing other courses. The weightage of the assignments was comparatively less in comparison to the amount of time put into completing them. Multiple quizzes for labs along with the assignments were sometimes overwhelming. Reducing the workload would be really helpful for the students to focus on other subjects.”
CSC 106 – The Practice of Computer Science
(January 2019) – development of worksheets, integration of a simulator
- Lab and lecture material was leveraged from previous offerings by Bill Bird and Mary Sanseverino.
- Designed printed worksheets for some lectures to encourage and support student interaction with the material. Worksheets contained exercises related to the lecture material
- Polling (iClicker) was used to gather and track responses to formative feedback questions. These questions were given every lecture and students were awarded a grade for both participation and the correctness of their answers.
- I introduced the use of a simulator to support labs and assignments on memory usage and assembly code. The simulator (The Simple Machine) was used with permission (Mike Feely, UBC)
- A template-based approach to introduce recursion was used based on my experiences with this approach at UBC. This approach is described in How to Design Programs by Felleisen, Findler, Flatt, Krishnamurthi and is leveraged to introduce programming to students in UBC’s CS1 course.
Curriculum development at University of British Columbia (UBC) as tenure-track Instructor
CPSC 213 – Introduction to Computer Systems
To support active learning in lecture, I developed a set of printed worksheets that were provided to students to give them a tangible artifact to work through as lecture content was presented through power-point slides. The worksheets contained questions and related exercises with place holders for students to solve problems and take notes. The worksheets also contained visual representations of memory that I would augment to explain concepts and trace through code on an overhead. Providing students with these visualizations allowed them to work along with me through the exercises and use the visualizations as a tool when later reviewing the material.
The design of the worksheets was based largely on the guided inquiry model[1] with the intent to lead students through the material based on questions, letting them try to answer, encounter problems and through discussion leading the class to a solution.
These worksheets have since been shared with and are used in some form by another UBC instructor.
(January 2018) – development of lecture worksheets
- development of 30 worksheets for the term, based on slide content developed by Dr. Feely
- development of corresponding instructor notes for each lecture
- feedback from students combined with a >80% lecture attendance and student interaction in class indicated that the worksheets may be having a positive impact on learning
(May 2018) – integration of polling question
- In response to positive student feedback, the course worksheets continued to be used/refined.
- This condensed 6 week offering had 2.5 hour lectures 3 times per week. I found the worksheet based approach helped students focus and engage with the material in these long lectures.
- In response to student feedback, I introduced an ungraded, formative assessment in lecture with the use of polling questions to give students feedback on their understanding of a concept as it was introduced.
- Sample worksheet taken from summer offering (2.5 hour lecture):
Reflection:
- Student comments suggested the worksheets and clicker questions were very helpful:
- “The worksheets were very helpful in following along in lecture and actually having something hands-on to do. Actually drawing out what was happening in the registers and memory helped me solidify my understanding of the material.”
- “I felt like the worksheets were great learning assets”
- “Celina was a great instructor: she communicated challenging concepts effectively, her worksheets helped a ton with our understanding of the material, she was very approachable, and had a great sense of humor. The assignments were fair, and really helped solidify understanding of class material.”
- “Always eager to help the students learn and does not make any question feel like it’s a ‘stupid’ one. What I felt like really helped me learn the curriculum for 213: the clicker questions, acting out the roles of the CPU/Controller/etc when teaching dynamic control flow, using analogies, the worksheets (super helpful, don’t stop these!!), practice exams, drawings on the board to map out the process. Also thank you for the few times you stayed behind class for a ‘mini’ lecture for students who didn’t get it the first time – although the material was cramped into a small summer session, you made it bearable :)”
- “The clicker questions are great, especially the ones we did at the beginning of the class as a review of last lecture material, I wish there were more of those for the last section of the course.”
- Though it does not go unnoticed that some students had difficulty when answers were verbally given and not explicitly written on the worksheet as we went through them. This is something I feel I need to remember, especially for those with learning disabilities or English language learners but at the same time I feel note-taking skills are critical as students move into upper-level courses:
- “I sometimes had a hard time keeping up with what Celina was verbally saying, and would have appreciated if she had clearly written out handout answers on the overhead or something.”
- There were definitely some concerns surrounding errors in the existing online quizzes as shown in the comment below. These error need to be fixed for subsequent offerings but we did ensure students’ grades were never negatively impacted by an error in a quiz.
- “Every single quiz that we received had at least one major typo that severely impacted the answers to some of the questions.”
APSC 160 – Introduction to Computation in Engineering Design
I augmented an existing programming practice tool to be used by students in conjunction with current screencasts to support worksheet based active learning in the classroom.
(September 2016) – development of programming practice materials
- updated an existing tool and deployed on a UBC computer science server
- created practice-problem for each lecture topic in the course .
More details of this project can be found in under the Educational Research Projects section.
(September 2018) – introduced grading of pre-lecture problems
- integration of the tool with the campus log-in system to facilitate grading of assigned pre-lecture problems to encourage students to interact with the material before lecture
CPSC 110 – Computation, Programs and Programming
Over the fiver terms teaching this course I developed a set of materials to help both new instructors teaching this course and to help student comprehension of concepts. These materials, described below, have been shared with and used by other faculty teaching this course at UBC:
(September 2015) – development of systems perspective
I created materials for the final lecture to introduce systems concepts of memory usage and parallel processing based on knowledge acquired in CPSC 110.
- This set of slides overviews a lesson plan for a discussion of memory usage and tail-call optimization: MemoryUsageOptimization
(May 2016) – development of visualizations
In an attempt to provide students with a mental model of concepts that build on one another throughout the term, I developed a set of visualizations to support student reasoning and concept development.
- The following set of images serve to illustrate two separate but related concepts, Mutual Reference (MR) and Generative Recursion (GR) introduced three weeks apart: Visualization-MutualRef-GenRec
(September 2016) – development of template blending visualization
- Slides developed as supplementary lecture material to support students understanding of how to blend templates: TemplateBlending
(May 2017) – materials to support metacognitive skills
Shared results of an education research paper on study strategies and the impact they have on success rates in computer science courses.
- The following slides used were shared with permission of the authors: StudyStrategies.
- Throughout the term, references back to this terminology were used to encourage student to apply these strategies in their class preparation, review and exam preparation.
(January 2018) – development of lecture handouts/ lesson plans
- Developed a set of handouts to assist English Language Learners in the Vantage sections in comprehending terminology surrounding definition and use of both functions and data: LectureHandouts
- Developed a shareable set of lesson plan folders for each lecture in the term. The following is an example of the files for a lecture in week two: SampleLessonPlan-withFiles
VANT 140 – Content and Language Enrichment Tutorials for APSC 160
(September 2015) – development of language support material
Lesson plans for the content tutorial hour came directly from existing APSC 160 pre-lab instructions and were taught by teaching assistants. I provided content input for the Academic English Instructor to support the language tutorial. I developed the following files to support explanation of representing conditionals in a flowchart along with an exercise and notes for the instructor:
(September 2016) – development of content and language support material
Following my experiences from Fall 2015 offering, I developed full lesson plans, exercises and solutions for the seven weeks of CSPC tutorial. Tutorials were led by CPSC teaching assistants.
- Sample files from Weeks 2 and 6 of the course are provided here:
- Working with a new Academic English Instructor to support the language tutorial, I provided two discussion focused lesson plans for the language tutorial:
- LessonPlan-BlackJackRules-to-Flowchart with solution:
BlackJack_Flowchart - LessonPlan-Comparing2VersionsOfInsertionSort with vying solutions:
Insertion-Sort-VersionBad and Insertion-Sort-VersionGood
- LessonPlan-BlackJackRules-to-Flowchart with solution:
VANT 140 – Content and Language Enrichment Tutorials for CPSC 110
(January 2016) – development of content and language support material
Building off the insights of the instructors from the initial Vantage offering of CPSC 110, our teaching-team goal was tight integration of the content and language tutorials in VANT 140. With input and feedback from the Vantage instructor team (Meghan Allen and Neil Leveridge), I developed 13 lesson plans for the content tutorial and 4 lesson plans for use by the Academic English Instructor in the language tutorial. A subset of these lesson plans are provided here:
- WK02_CT – HtDF critique – Lesson Plan
- WK02_LT – Early HtDF Teach a Problem – Lesson Plan
- WK07_CT- BacktrackingSearch – LessonPlan
- BST-searches-solution
(January 2017) – development of content support material
A decision by the Academic English Program to separate the content and language tutorials forced a restructuring of these course materials. As the only Vantage CPSC 110 instructor, I developed the lesson plans, exercises and solutions for 10 weeks of tutorial. A subset of these lesson plans are provided here:
- WK04_CT_HtDD-HtDF-design-comparison – LessonPlan
- WK07_CT- 2-OneOf – LessonPlan
- WK09_CT- GenRec – LessonPlan
Curriculum development at University of Victoria (UVic) as limited-term Assistant Teaching Professor
CSC 110 – Fundamentals of Programming I
- Provided here is a subset of practices I integrated into the CSC 110 curriculum in my role late as sessional and limited-term instructor:
- I introduced active-learning into the classroom, interleaving theory-based lectures with hands on exercises, giving students a chance to try the problem before working through a live solution. This required a change in the amount of information that was presented through slides in lecture and allowed students to tie the new information to concrete examples.
- I moved the introduction of methods to week 1 of the course. After witnessing so many students designing relatively large programs within their main function, I wanted to encourage the use of and comfort with designing a modular implementation using methods. Students did not struggle with the addition of this arguably complex idea within their first assignment but I still found they had trouble deciding when a new method should be created and their methods were still often quite long.
- I allowed a MSc and PhD student to deploy a programming practice tool as an optional resource into my course. This tool appeared to be something that would encourage students to do exactly what they needed to do to be successful: to program. One challenge that I witnessed was the student use of the tool was not distribute evenly across the term yet showed very high usage before exams.
- Given the growing size of classes (multiple sections, 200+ in size), I realized that even though my office hours appeared to be packed (15+ students), this was still such a small percentage of the student base. I experimented with screen casting and annotations to explain the process of solving midterm problems as opposed to releasing a static version of the solution.
CSC 115 – Fundamentals of Programming II
- In my second offering of CSC 115 I integrated the active-style lecture that I introduced in CSC 110 to this course. Additionally I developed some worksheet-style exercises that again, allowed students to try on their own first but provided an artefact to drive the lecture.
CSC 116 – Fundamentals of Programming II: Engineering Applications
- I taught one of two sections of this course, where the other instructor had experience with the material and teaching the engineering cohort of students. His experience brought valuable insights and he provided a set of learning outcomes for the course with corresponding web resources that we provided to students. Given this set of learning outcomes and resources, I developed a detailed set of lesson plans, active-learning exercises and set of slides to be used for lecture and to provide to students. We worked collaboratively to develop a new set of assignments for the students that aligned with learning outcomes.
- Sample worksheet: In-Class Worksheet (CS2 – Inheritance)
CSC 167 – Game Strategy, Interaction and Design
- I developed the curriculum for this course from the ground up while working in a limited-term instructor role. Here I have provided the foundation for the course design decisions followed by some sample materials.
- Upon researching game design courses from other institutions I found and contacted UC Santa Cruz for the Foundations of Interactive Game Design (https://courses.soe.ucsc.edu/courses/cmps80k). With permission, I leveraged their project-driven course design using GameMaker Studio to provide accessibility to those without prior programming experience.
- In the design of CSC 167, I integrated core software engineering principles, practices and techniques into the curriculum. The curriculum was designed with weekly learning outcomes that were presented in:
- a game-specific lecture drawing from various game design experts either through publications or visitors from industry
- a follow-up lecture on the related general software development practice(s)
- The overlap between the related lectures served to draw on students’ knowledge of games to introduce them to software practices and reinforce the material and techniques being introduced.
- To give the game development process a real-world feel, students were asked to market their game as if they were selling it to gamers or to a game company.
- Guest lecturers from both from startups (Metalhead Software) and larger companies (i.e. Microsoft) as well as UVic’s Innovation Centre for Entrepreneurs (ICE) were brought in to talk to students both about working for a game company and about the challenges of entrepreneurial endeavours.
- Group final presentations were required to include a video prototype that would not only demonstrate their game but would serve to market it in the form of a trailer.
- On request, I have shared these materials for use at Thompson Rivers University in their offering of a similar course.
- Provided below are links to the curriculum overview and some sample assignments and student submissions:
SENG 310 – Human Computer Interaction (HCI)
- I taught this introduction to HCI course five times, giving me the opportunity to reflect and add to the curriculum based on student experiences. Provided here is a subset of materials and activities I integrated into the course curriculum:
- Drawing on materials provided by Dr. Tory in which a small subset of the lectures were centered around hands on activities, I developed hands on activities for the majority of the lectures. Each lecture spent a third of the time introducing a concept, a third of the time on an activity and the final a third of the time discussing the activity.
- The hands-on activities ranged from application of a given technique to synthesis of related techniques within the development process.
- In initial offerings I would lead students through a review session providing an overview of techniques to help students synthesize the information taught. In later terms I shifted to activity based review, where I asked to students to first do the synthesis on their own in groups and then together as a class walk through a review.
- For example, half way through the term, I asked students to reflect on all the techniques that had been introduced in the course and to depict in someway the relationship between these techniques and where they fit within the software development lifecycle. In previous terms, I had started off with an overview slide, but found that when I asked students to diagram the relationships first on their own, they came up with interesting and organic representations of the information.
- Where possible, I drew from real-world experiences to motivate the need for and use of the techniques introduced in the course. Some of these included: Examples from conference publications (ie. CHI), guest lectures from industry, guest lectures on PhD student study-design, my own personal experiences in the Cognition Challenge.
References
[1] Hu, H. H. and Shepherd, T. D. 2014. Teaching CS 1 with POGIL activities and roles. In Proceedings of the 45th ACM technical symposium on Computer science education (SIGCSE ’14). ACM, New York, NY, USA, 127-132.