<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CS162 - Winter 2026 | Chemeketa CS</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/</link><atom:link href="https://computerscience.chemeketa.edu/courses/cs162/202530/index.xml" rel="self" type="application/rss+xml"/><description>CS162 - Winter 2026</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><image><url>https://computerscience.chemeketa.edu/images/icon_hu742489f1860cfa6b3bfbd46e1546cd4b_666078_512x512_fill_lanczos_center_3.png</url><title>CS162 - Winter 2026</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/</link></image><item><title>Resource Links</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/links/</guid><description>&lt;h2 id="class-resources">Class Resources&lt;/h2>
&lt;p>
&lt;a href="https://liveexample-ppe.pearsoncmg.com/selftest/selftestcpp5e?username=liangcpp5e&amp;amp;chapter=1" target="_blank" rel="noopener">Practice Quiz Questions&lt;/a>.
This link:
&lt;a href="https://liveexample-ppe.pearsoncmg.com/selftest/selftestcpp5e?username=liangcpp5e&amp;amp;chapter=1" target="_blank" rel="noopener">https://liveexample-ppe.pearsoncmg.com/selftest/selftestcpp5e?username=liangcpp5e&amp;chapter=1&lt;/a> takes you to
Chapter 1 practice. To get to other chapters, change the chapter number in the URL (e.g. to get to Chapter 12,
change the part that says &lt;strong>&amp;quot;&amp;amp;chapter=1&amp;quot;&lt;/strong> to say &lt;strong>&amp;quot;&amp;amp;chapter=12&amp;quot;&lt;/strong>).&lt;/p>
&lt;p>
&lt;a href="https://computerscience.chemeketa.edu/cpplab" target="_blank" rel="noopener">CPP Lab&lt;/a>&lt;/p>
&lt;p>
&lt;a href="https://github.com/ChemeketaCS/cs162Code" target="_blank" rel="noopener">CS162 Github repository&lt;/a>&lt;br>
&lt;a href="https://docs.google.com/document/d/1S8dMsT6B2B7jW2Z0OWoV6TT8GOlYkDa9Bw0mhrUTuSU/edit?usp=sharing" target="_blank" rel="noopener">Github Tutorial&lt;/a>&lt;/p>
&lt;p>
&lt;a href="http://computerscience.chemeketa.edu/guides/vscode-setup/" target="_blank" rel="noopener">VSCode Setup Instructions&lt;/a>
&lt;a href="https://computerscience.chemeketa.edu/guides/project-templates/" target="_blank" rel="noopener">VSCode Project Templates&lt;/a>&lt;/p>
&lt;p>
&lt;a href="http://computerscience.chemeketa.edu/CSResources/CommandLineGuide.pdf" target="_blank" rel="noopener">Command Line Quick Reference&lt;/a>&lt;/p>
&lt;p>
&lt;a href="https://computerscience.chemeketa.edu/guides/valgrind/">Valgrind Guide&lt;/a>&lt;/p>
&lt;p>
&lt;a href="https://computerscience.chemeketa.edu/guides/csstudent-server/">CS Student Server Guide&lt;/a>&lt;/p>
&lt;h2 id="c">C++&lt;/h2>
&lt;p>
&lt;a href="https://docs.google.com/document/d/1F6J56ec4VCBGzSb9CvRNvMfhnMPsZ7KB7injaODRQEI/edit" target="_blank" rel="noopener">C++ Crash Course for AP CS students&lt;/a>&lt;/p>
&lt;p>
&lt;a href="http://www.learncpp.com/" target="_blank" rel="noopener">LearnCpp.com online text&lt;/a>&lt;br>
&lt;a href="http://www.cplusplus.com/" target="_blank" rel="noopener">CPlusPlus.com reference&lt;/a>&lt;br>
&lt;a href="http://www.fredosaurus.com/notes-cpp/index.html" target="_blank" rel="noopener">Fredosaurus C++ notes&lt;/a>&lt;/p>
&lt;p>
&lt;a href="https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#main" target="_blank" rel="noopener">C++ Guidelines from C++ bigwigs&lt;/a>&lt;br>
&lt;a href="https://google.github.io/styleguide/cppguide.html" target="_blank" rel="noopener">Google's C++ Styleguide&lt;/a>&lt;/p>
&lt;p>
&lt;a href="https://isocpp.org/faq" target="_blank" rel="noopener">CPP FAQ&lt;/a>&lt;/p>
&lt;p>
&lt;a href="http://pythontutor.com/cpp.html#mode=edit" target="_blank" rel="noopener">C++ Code Visualizer&lt;/a>&lt;/p>
&lt;h2 id="programming-practice">Programming Practice&lt;/h2>
&lt;p>
&lt;a href="https://computerscience.chemeketa.edu/guides/extended-learning/">Places and ways to practice programming&lt;/a>&lt;/p></description></item><item><title>Week 1 - Class Overview and Structs</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week01/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week01/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;ul>
&lt;li>Use structs to represent heterogeneous collections of data&lt;/li>
&lt;li>Combine structs and vectors to represent collections of complex data&lt;/li>
&lt;li>Use enumerations to represent related constants&lt;/li>
&lt;/ul>
&lt;h2 id="recommended-schedule">Recommended Schedule&lt;/h2>
&lt;div class="alert alert-info">
&lt;div>
&lt;p>You have a lot of freedom to choose when you get the work done each week.&lt;/p>
&lt;p>There is a recommended schedule below to help you break up the work into manageable chunks.
&lt;strong>Trying to do all of your learning in one monster day of studying tends to be much less effective
than working on smaller chunks of the material more often&lt;/strong>.&lt;/p>
&lt;p>Although the major assignments are always due at the start of next week,
there are often mid-week deadlines for other work (check Canvas for all due dates),
so you can't wait until the weekend to get everything done.&lt;/p>
&lt;p>If your schedule requires you to do most of your work
for this class on the weekend, you should try to work ahead on the next week each weekend
rather than playing catchup from the previous week. That way you have plenty of time to
ask questions and get any needed help before your assignments are due.&lt;/p>
&lt;/div>
&lt;/div>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#course-intro">Course Intro and Policy Quiz&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#access-book">Access the Book&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#setup">Setup development environments&lt;/a>&lt;/li>
&lt;/ul>
&lt;br>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#genai-and-you">GenAI and You&lt;/a>&lt;/li>
&lt;li>Start Ch 15 on
&lt;a href="#structs">Structs&lt;/a> (15.1-15.6)&lt;/li>
&lt;li>Start Structs exercise set (you won't be ready for the problems involving vectors yet)&lt;/li>
&lt;/ul>
&lt;br>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>Continue Ch 15 -
&lt;a href="#enums">Enums&lt;/a> and
&lt;a href="#structs-vectors">structs and vectors&lt;/a> (15.7-15.10)&lt;/li>
&lt;li>Do Enums exercise set&lt;/li>
&lt;li>Finish Structs exercise set&lt;/li>
&lt;/ul>
&lt;div class="alert alert-info">
&lt;div>
You often will not need to do all the exercises listed on the Exercise page
in the book. Focus on the ones shown on the assignment page in Runestone.
&lt;/div>
&lt;/div>
&lt;br>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>Finish reading Ch 15&lt;/li>
&lt;li>See
&lt;a href="#structs-and-headers">Structs and Headers&lt;/a> below&lt;/li>
&lt;li>Work on Week 1 assignment&lt;/li>
&lt;/ul>
&lt;br>
&lt;hr>
&lt;h2 id="course-intro">Course Intro&lt;/h2>
&lt;p>If you have not already watched the course intro video, do so now:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/0JlAjVzd8yg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Course Intro">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>In Canvas, review the syllabus and take the class policies quiz. You can take it
as many times as you like before the deadline. So make sure to get 100% on it!&lt;/p>
&lt;div class="alert alert-warning">
&lt;div>
The quiz is your &amp;quot;proof of attendance&amp;quot;. It must be completed by Wednesday of the first week
of the term or you may be dropped from the course for non-attendance.
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="access-book">Access Book&lt;/h2>
&lt;p>Watch this video to see how to use the book and complete the book based assignments.&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/udH5mnnghKE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Using the Book">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;div class="alert alert-warning">
&lt;div>
&lt;p>Videos with the notice &amp;quot;Important Video&amp;quot; contain information that is NOT
covered in the book. You should make sure to watch these videos.&lt;/p>
&lt;p>Videos that do not have that notice are optional supplements to the book material.&lt;/p>
&lt;/div>
&lt;/div>
&lt;p>Not all assignments will be completed in the book. Canvas (Elearn) should be your primary
source for assignments and due dates.&lt;/p>
&lt;hr>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;p>You need to have a working development environment for this course. One option is to
use Github Codespaces. The other is to set up a local development environment on your
computer.&lt;/p>
&lt;p>Eventually, you are going to need to have a local environment, but if you have not
done either in the past, using Codespaces is often easier to get started with quickly.
Codespaces also has the advantage of being the same environment that I will be using
for demos - there will be times when differences in local setups (OS, installed tools, etc...)
can cause confusion. So even if you normally use a local setup, you will want
to know how to switch to a codespace if needed to accomplish something.&lt;/p>
&lt;p>So do the following:&lt;/p>
&lt;p>&lt;strong>If you have not used Codespaces before&lt;/strong>, follow the
&lt;a href="https://computerscience.chemeketa.edu/guides/codespace/" target="_blank" rel="noopener">Codespaces guide&lt;/a> for instructions
on how to set up and use a Codespace.&lt;/p>
&lt;p>&lt;strong>Setup/update a local development environment&lt;/strong>, follow the
&lt;a href="https://computerscience.chemeketa.edu/guides/local-development/" target="_blank" rel="noopener">Local Development Setup&lt;/a> instructions to set up your computer.
Make sure to update the templates you are using!&lt;/p>
&lt;p>There will be a mini-assignment soon that requires you to show a screenshot of your
local development environment working. So even if you prefer to work in a Codespace,
get your local environment set up now. If you run into issues, please get help
on Discord, the discussion board, or during office hours.&lt;/p>
&lt;div class="alert alert-warning">
&lt;div>
The templates and instructions for local development have changed recently. Even if you
have done the setup before, confirm that you have the latest instructions and templates.
&lt;/div>
&lt;/div>
&lt;div class="alert alert-info">
&lt;div>
&lt;p>I recommend setting up a Codespace or making a local project that you use for testing.
Any time you just want to test out a code sample or do an experiment, use that Codespace or local project.&lt;/p>
&lt;p>When you are working on an assignment you will submit, create a new repository for that assignment.&lt;/p>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="genai-and-you">GenAI and You&lt;/h2>
&lt;p>Generative AI is a powerful tool for programmers. It can also be a helpful
tool for learning computer science. However, in both contexts, there are downsides
and risks to be aware of.&lt;/p>
&lt;p>There are many ethical and practical considerations in regard to Generative AI.
Was the training data obtained ethically? Are there biases in the training data?
Is the output correct? Is it secure? Who benefits from automating labor that
a human might otherwise do?&lt;/p>
&lt;p>But from a very immediate perspective, you should be concerned about what
your goals are in a CS course and how using Generative AI might hinder
your ability to meet those goals.&lt;/p>
&lt;p>This video discusses some of these issues and provides guidance on how to
use (and not use) Generative AI effectively as part of your
learning process.&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/vjPCoXCHYqY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Generative AI and You">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="structs">Structs&lt;/h2>
&lt;p>Read Chapter 15.1-15.6 on Structs in the textbook.&lt;/p>
&lt;p>This optional video covers key ideas:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/fMOkRquMHe8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Struct Basics">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="enums">Enums&lt;/h2>
&lt;p>Chapter 15.7 and 15.8 covers enumerations (enums).&lt;/p>
&lt;p>This optional video covers the key ideas:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/vjwMcwEyZOg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Enumerations">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="structs-and-vectors">Structs and Vectors&lt;/h2>
&lt;p>Chapter 15.9 and 15.10 covers using structs and vectors together.&lt;/p>
&lt;p>Watch this video that demonstrates how to use the debugger to
inspect complex composite data types using both structs and vectors:&lt;/p>
&lt;p>This optional video reviews key ideas about combining structs and vectors:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/562oqqFQO6I" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Structs and Vectors">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>An idea that is covered by the book but is worth emphasizing is
the difference between a copy of a struct and a reference to a struct.
Watch this video for a deeper explanation of that concept:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/4DeBrBZIL64" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Structs and References">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="structs-and-headers">Structs and Headers&lt;/h2>
&lt;p>Watch this video about using structs across multiple files:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/f6KIkmRMisU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Struct and Files">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>If you need a deeper refresher on how .h files work, watch the video below and then review the
&lt;a href="https://computerscience.chemeketa.edu/guides/including-code/headers/" target="_blank" rel="noopener">Using .h/.cpp files&lt;/a> walkthrough
from CS161. Full coverage of .h/.cpp files can be found in Chapter 6.&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/4olxwCtr9O4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Multiple File Projects">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="do-assignment-1">Do Assignment 1&lt;/h2>
&lt;p>Start working on the first submitted assignment. It is listed as &amp;quot;Assignment 1&amp;quot; in Canvas.&lt;/p>
&lt;p>Most weeks will include an assignment you will complete outside of the book and submit in Canvas.
As part of starting the first assignment, you should make sure to
read this
&lt;a href="https://computerscience.chemeketa.edu/assignments/cs161/about/" target="_blank" rel="noopener">document about the work history you must submit as part of every assignment&lt;/a>.&lt;/p>
&lt;p>There is a video in that document that shows how your work history is documented and how to
inspect that history.&lt;/p>
&lt;p>When you are complete, here is how to submit your assignment:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/UcFiiNsBXzc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Submitting an Assignment">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h3 id="unit-testing-review">Unit Testing Review&lt;/h3>
&lt;p>If you did not take CS161 here, you will want to watch these two videos about unit testing:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/f9P4-inCaCU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Unit Testing Concepts">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/arzJZAAiLg8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Unit Testing Details">&lt;/iframe>
&lt;/div>
&lt;/div></description></item><item><title>Week 2 - Introduction to Object-Oriented Programming (OOP)</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week02/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week02/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;ul>
&lt;li>Design classes to represent data types in C++&lt;/li>
&lt;li>Construct and read UML class diagrams&lt;/li>
&lt;li>Write basic object-oriented programs using common design principles&lt;/li>
&lt;/ul>
&lt;h2 id="schedule">Schedule&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>Start on
&lt;a href="#object-oriented-programming">Object Oriented Programming&lt;/a> - Ch 16.1-16.6&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>Continue
&lt;a href="#object-oriented-programming">Object Oriented Programming&lt;/a> - Ch 16.7-16.11&lt;/li>
&lt;li>Work on Ch 16 Exercises&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>Finish
&lt;a href="#object-oriented-programming">Object Oriented Programming&lt;/a> - Rest of Ch 16.
However, you can skim 16.13 and skip 16.17 entirely if you want to. You should be aware
of what classes look like when implemented in modules, but your assignments will all use
.h/.cpp file implementations.&lt;/li>
&lt;li>Start the assignment&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>Do the
&lt;a href="#local-build-and-run">Local Build and Run Assignment&lt;/a>&lt;/li>
&lt;li>If you did not take CS161 here, also see the
&lt;a href="#review">Review&lt;/a> section.&lt;/li>
&lt;/ul>
&lt;h2 id="object-oriented-programming">Object Oriented Programming&lt;/h2>
&lt;p>Chapter 16 covers the basics of Object Oriented Programming (OOP).&lt;/p>
&lt;p>The book covers implementing classes in a single module file (16.13) and in a .h/.cpp file pair (16.12).
You can just skip 16.13 and focus on 16.12, since that is how you will be implementing classes
in your assignments. (If you are not familiar with the difference, see Chapter 6 of the book.)&lt;/p>
&lt;p>After you are through section 16.5 watch this video on using the debugger to inspect objects:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/rmwxzLeJ2dQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Object Debugging">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>When you get to Ch 16.12, watch this video that shows what a class split into .h/.cpp files looks like in VSCode:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/3h7m1eG1xPA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title=".h/.cpp Class Implementation">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>These other optional videos review key concepts from the chapter:&lt;/p>
&lt;p>Big picture overview of OOP:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/5G7fwz5HGkk" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="OOP Intro">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>Basics of OOP (16.1-16.5):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/qgVhdG04LQQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="OOP Basics">&lt;/iframe>
&lt;/div>
&lt;/div> (16.1-16.5)&lt;/p>
&lt;p>Constructors (16.7):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/b954Q7v_abU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Constructors">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>Separation of Interface and Implementation (16.8):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/78HQ5OvGOo8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Separation of Declaration and Implementation">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>UML (16.10):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/P_XCKo0nP6o" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="UML">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>Encapsulation (16.11):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/d41brahtYcE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Encapsulation">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h2 id="local-build-and-run">Local Build and Run&lt;/h2>
&lt;p>Although GitHub Codespaces is a great environment for development, you should also
be able to build and run your C++ programs on your local machine.&lt;/p>
&lt;p>This week you have a mini assignment to demonstrate that you can build and run a simple C++ program
locally on your machine. It requires taking a screenshot of your desktop, with VSCode (running
locally, not in a Codespace) open with a C++ project loaded, and a terminal window showing
the program being built and run. This video shows you how to do that:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/biFPprduiUE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Building and Running Locally">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;h2 id="review">Review&lt;/h2>
&lt;p>If you did not take CS161 here, read Chapter 5.11 on Doxygen style comments. Then watch
this video to learn how to easily write doxygen comments in VS Code:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/3DEDZOq-r9w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Doxygen Style Function Comments">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>You should also review how to use the Combo Project Project Template:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/0APOwMhWfZU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Combo Project Basics">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>And, if you don't know how to use the debugger in VSCode to step into and out of function calls,
check out this video:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/LTJ_hHMvIyQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Debugging Functions">&lt;/iframe>
&lt;/div>
&lt;/div></description></item><item><title>Week 3 - Pointers &amp; Objects, Aggregation</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week03/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week03/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Use objects as input and output for functions&lt;/li>
&lt;li>Recognize how and when to appropriately use const and static class
members&lt;/li>
&lt;li>Use composition to build objects from other objects&lt;/li>
&lt;li>Write unit tests for classes&lt;/li>
&lt;/ul>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>Holiday - relax or work ahead&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>Start on
&lt;a href="#interacting-objects">Interacting Objects&lt;/a> - Ch 17.1-17.4&lt;/li>
&lt;li>Start Ch 17 Exercises - OO Thinking&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>Continue
&lt;a href="#interacting-objects">Interacting Objects&lt;/a> - Ch 17.5-17.9&lt;/li>
&lt;li>Start Ch 17 Exercises - Composition&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>Continue
&lt;a href="#interacting-objects">Interacting Objects&lt;/a> - Finish&lt;/li>
&lt;li>Start the assignment. See
&lt;a href="#assignment">Assignment&lt;/a> section for a video that shows what the file structure and Makefile should look like.&lt;/li>
&lt;/ul>
&lt;h2 id="interacting-objects">Interacting Objects&lt;/h2>
&lt;p>Chapter 17 covers writing code involving multiple interacting objects. This includes passing objects
to functions, returning objects from functions, and using objects as member variables of other objects (composition).&lt;/p>
&lt;p>After you are through section 17.3 watch this video on using the debugger to track passed objects:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/ce2UpKAUSm4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Debugging Passed Objects">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h3 id="other-videos">Other Videos&lt;/h3>
&lt;p>These videos cover other topics from Chapter 17. They are not required, but you may find them helpful.&lt;/p>
&lt;p>This video discusses const member functions. It also briefly reviews passing objects as const references. (17.1)
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/jwplJVjE6nY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Const Member Functions">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>This video reviews const members. (17.2)
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/mVLyrk3zuYs" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Objects working on Objects">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>This video covers static members. (17.4)
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/dfvEvrB3E7M" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Static Members">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>This video covers Composition. (17.5-17.8)
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/9pARqtEFRrY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Object Composition">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;p>This video covers Composition. (17.9)
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/HhP1AkDJ_Wg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Composition &amp;amp; Construction">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h2 id="assignment">Assignment&lt;/h2>
&lt;p>This video walks through what the setup for this week's assignment looks like:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/A41h4iawW6w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Composition Assignment Setup">&lt;/iframe>
&lt;/div>
&lt;/div></description></item><item><title>Week 4 - Pointers &amp; Objects, Aggregation</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week04/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week04/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Write and trace code that uses pointers&lt;/li>
&lt;li>Use aggregation to build objects from other objects&lt;/li>
&lt;/ul>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#pointers">Pointers&lt;/a> (Ch18.1-18.5)&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>Finish
&lt;a href="#pointers">Pointers&lt;/a> (Ch18.6-18.7)&lt;/li>
&lt;li>Do Pointer Exercises worksheet after 18.6 or 18.7 (See Week 4 Module)&lt;/li>
&lt;li>
&lt;a href="#pointers-and-objects">Pointers &amp;amp; Objects&lt;/a> (Ch18.8-18.9)&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#pointers-and-objects">Aggregation&lt;/a> (Ch18.10-18.14)&lt;/li>
&lt;li>Ch 18 Exercises&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>Work on assignment&lt;/li>
&lt;li>Start reading
&lt;a href="#inheritance-basics">Inheritance&lt;/a> (Ch19.1-19.4)
we will be covering the rest of the chapter next week, but you
should get a start on it now.&lt;/li>
&lt;/ul>
&lt;div class="alert alert-warning">
&lt;div>
The midterm is coming up. Check the discussion board for details.
&lt;/div>
&lt;/div>
&lt;h2 id="activity-outline">Activity Outline&lt;/h2>
&lt;h3 id="pointers">Pointers&lt;/h3>
&lt;p>The first part of Chapter 18 covers the concept of pointers and
then moves on to using pointers with objects.&lt;/p>
&lt;p>This video recaps 18.1-18.5:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/_ukFRLGEM3A" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Pointers">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>This next one demonstrates using the debugger in VS Code to examine pointer
variables and the memory they point to. Watch it after you are done with 18.6.&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/H6HPG9zOK94" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Debugging Pointers">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>Also at that point, take a few minutes to do the Pointer Exercises worksheet
available in the Week 4 Module in Canvas. In the same location,
you can find an example problem that is worked step by step as well
as a key to check your work. You do not need to turn this in; it is just
for practice.&lt;/p>
&lt;h3 id="pointers-and-objects">Pointers and Objects&lt;/h3>
&lt;p>Ch 18.8-18.9 focus on using pointers with objects. This videos review those sections:&lt;/p>
&lt;p>18.8:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/VrUUM9-o_2E" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Pointer member access">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>18.9:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/YgovgayiSSA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="This">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h3 id="aggregation">Aggregation&lt;/h3>
&lt;p>The last part of Chapter 18 covers aggregation, which is using objects
as member variables of other objects.&lt;/p>
&lt;p>These videos review sections on aggregation:&lt;/p>
&lt;p>18.10-18.11:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/LBoWFtTUUm8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Aggregation">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>&lt;/p>
&lt;p>18.12:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/MMM5-AtsHd4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Same class Aggregation">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>&lt;/p>
&lt;p>Finally, this video walks through the Ch 18.13 family tree example.
It demonstrates using the VSCode debugger to examine the objects and pointers
involved. So even if you understand the concepts without the
video, it is worth a quick watch to see the debugging techniques.&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/UsBHtiu3uaw" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Family Tree Example">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;h3 id="inheritance-basics">Inheritance Basics&lt;/h3>
&lt;p>We will finish up Chapter 19 next week, but you should get a start on it now.
The schedule for next week will assume you have read 19.1-19.4 this week.&lt;/p>
&lt;p>This optional video review the basics of inheritance from those sections:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/YBX7YyL8Nss" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Inheritance Basics">&lt;/iframe>
&lt;/div>
&lt;/div></description></item><item><title>Week 5 - Inheritance, Operators</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week05/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week05/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Use inheritance to extend classes&lt;/li>
&lt;li>Identify appropriate uses for abstract classes&lt;/li>
&lt;li>Describe how virtual functions differ from regular ones and enable
polymorphism&lt;/li>
&lt;li>Create classes that work using standard operators&lt;/li>
&lt;/ul>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>Continue
&lt;a href="#inheritance">Inheritance&lt;/a> (Ch19.5-19.9)&lt;/li>
&lt;li>Do
&lt;a href="#virtual-call-practice">Virtual Call Practice&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>Finish
&lt;a href="#inheritance">Inheritance&lt;/a> (Ch19.10-19.14)&lt;/li>
&lt;li>Do
&lt;a href="#inheritance-design-activity">Inheritance Design Activity&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#midterm-review">Midterm Review&lt;/a>&lt;/li>
&lt;li>Do Ch 19 Exercises&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#operator-overloading-basics">Operator Overloading&lt;/a> (Ch 20.1-20.8)&lt;/li>
&lt;/ul>
&lt;h2 id="activity-outline">Activity Outline&lt;/h2>
&lt;h3 id="inheritance">Inheritance&lt;/h3>
&lt;p>You should have read 19.1-19.4 last week. This week we will finish
up Chapter 19.&lt;/p>
&lt;p>These optional videos may help:&lt;/p>
&lt;p>Overriding functions (Ch 19.5):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/9EkbaIg_tu4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Overrides">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Virtual Functions (Ch 19.7):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/WGlWPSxhQho" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Virtual Functions">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Object Slicing (Ch 19.8):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/w-IsPlhzyt4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Slicing">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Abstract Functions and Classes (Ch 19.9-19.10):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/jQsCs8V6Uy0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Abstract">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Multiple Inheritance and Interfaces (Ch 19.11):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/ACS3ypEEeas" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Multiple Inheritance and Interfaces">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Composition vs Inheritance (Ch 19.13):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/HZB53WEpkAs" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Composition vs Inheritance">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h4 id="virtual-call-practice">Virtual Call Practice&lt;/h4>
&lt;p>Virtual functions and object slicing can be tricky concepts.
See the Week 5 Module in Canvas for a worksheet that has some
practice problems on these topics.&lt;/p>
&lt;p>Make sure you are through 19.8 before doing this worksheet.&lt;/p>
&lt;h4 id="inheritance-design-activity">Inheritance Design Activity&lt;/h4>
&lt;p>In the Week 5 Module in Canvas you will find a design activity. Tackle
it after you have read through 19.12.&lt;/p>
&lt;h3 id="midterm-review">Midterm Review&lt;/h3>
&lt;p>See the week 5 Module in Canvas for a review packet. It is not a sample test per se, but it has examples of the types of questions that might be on the midterm.&lt;/p>
&lt;p>The midterm will cover up through inheritance. Like the CS161 exams, the midterm will involve some writing code by hand, but it the code writing is focused on the core ideas, not all the possible syntax details. Unlike the CS161 exams, there will be questions that don't involve writing code, such as explaining ideas or designing a class.&lt;/p>
&lt;h3 id="operator-overloading-basics">Operator Overloading Basics&lt;/h3>
&lt;p>Chapter 20 introduces operator overloading. (We are not doing the exercises, just the reading.)&lt;/p>
&lt;p>This optional video gives an overview of the chapter:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/iUxmi2PqsWk" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Operator Overloads">&lt;/iframe>
&lt;/div>
&lt;/div></description></item><item><title>Week 6 - Intro to Data Structures and Algorithms</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week06/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week06/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Use std containers like list, set, and map&lt;/li>
&lt;li>Describe the differences between various container types&lt;/li>
&lt;li>Use iterators to traverse various container types&lt;/li>
&lt;li>Use standard algorithms with containers&lt;/li>
&lt;/ul>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>Midterm&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>Start
&lt;a href="#containers-and-algorithms">Containers and Algorithms&lt;/a> Ch 21.1-21.3&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>Continue
&lt;a href="#containers-and-algorithms">Containers and Algorithms&lt;/a> Ch 21.4-21.9&lt;/li>
&lt;li>Start the Ch 21 Exercises (you are ready for the first three problems, save the other)&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>Continue
&lt;a href="#containers-and-algorithms">Containers and Algorithms&lt;/a> Ch 21.10-21.14
Note that the reading stops at 21.14. We will not be covering 21.15-16 right now, but will revisit them later.&lt;/li>
&lt;li>Do the assignment&lt;/li>
&lt;/ul>
&lt;h2 id="activity-outline">Activity Outline&lt;/h2>
&lt;p>This week marks a transition in focus from core programming concepts
to using those concepts to build complex data structures and algorithms.&lt;/p>
&lt;p>We will continue to learn some new C++ syntax and programming ideas,
but more and more of our time will be spent using the ideas we know to
build useful tools.&lt;/p>
&lt;p>This week we are essentially doing a quick overview of the kinds of things
we will be building in the rest of this course and in CS260.&lt;/p>
&lt;h3 id="containers-and-algorithms">Containers and Algorithms&lt;/h3>
&lt;p>There are many ways to organize data in a program beyond just using
a vector. C++ provides a number of built-in container types that
implement common data structures (as do most other programming languages).&lt;/p>
&lt;p>In addition, the C++ standard library provides a large number of
algorithms that can be used to manipulate data in these containers.&lt;/p>
&lt;p>Read Ch 21.1-21.14.&lt;/p>
&lt;p>These optional videos may help:&lt;/p>
&lt;p>std::lists (Ch 21.1):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/CHz9r0uQFj8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Lists">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Iterators and Traversal (Ch 21.2-3):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/iNULwNFGVAs" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Iterators and Traversal">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Sets (Ch 21.4-6):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/7Tq7kCP6UuQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Sets">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Maps (Ch 21.7-21.9):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/Z96vpRpaf1s" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Maps">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Algorithms (Ch 21.10-21.14):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/VbGbYyW0fQ0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Algorithms">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p></description></item><item><title>Week 7 - Memory Management</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week07/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week07/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Accurately describe how a program is using the stack, heap and
pointers&lt;/li>
&lt;li>Use destructors and copy constructors appropriately in classes&lt;/li>
&lt;li>Describe and diagram the difference between a deep and a shallow
copy&lt;/li>
&lt;li>Write simple container classes that manage dynamic memory&lt;/li>
&lt;/ul>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>Holiday&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#dynamic-memory">Dynamic Memory&lt;/a> (Ch22.1-22.6)&lt;/li>
&lt;li>Pointer Drawing WS&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>Setup/Experiment with
&lt;a href="#address-sanitizer">Address Sanitizer&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#arrays">Arrays&lt;/a> (Ch22.8-22.9)&lt;/li>
&lt;li>Ch 22 Exercises&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#container-classes">Container Classes&lt;/a> (Ch22.10-22.15)&lt;/li>
&lt;li>Optional:
&lt;a href="#tools-for-managing-memory">Tools for managing memory&lt;/a>&lt;/li>
&lt;li>Optional:
&lt;a href="#rule-of-five">Rule of Five&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="activity-outline">Activity Outline&lt;/h2>
&lt;h3 id="dynamic-memory">Dynamic Memory&lt;/h3>
&lt;p>Read Ch 22.1-22.6 on dynamic memory.&lt;/p>
&lt;p>Do the HeapDrawing worksheet from the classroom files link.
There is a HeapDrawingSample that shows step by step how to do the problems.&lt;/p>
&lt;p>This optional video review the concepts:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/bY6O1p7_Pyc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Dynamic Memory">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;h3 id="address-sanitizer">Address Sanitizer&lt;/h3>
&lt;p>Read 22.7.&lt;/p>
&lt;p>Watch this video on using Address Sanitizer:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="important-video-note" style="font-style: italic; color: #5b1b1b;">
&lt;span aria-hidden="true">⚠&lt;/span> Important Video
&lt;/div>
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/kyP9m50t2wM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Address Sanitizer">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;p>Do the Address Sanitizer screenshot assignment.&lt;/p>
&lt;h4 id="windows-users---setup-wsl">Windows Users - Setup WSL&lt;/h4>
&lt;p>If you are on Windows you should install Windows Subsystem for Linux (WSL). Address Sanitizer is not available on Windows, but it is available in WSL. So you need to use a codespace or WSL to use Address Sanitizer.&lt;/p>
&lt;p>Longer term, you will increasingly find it useful to have a Linux environment available for programming. WSL is a great way to get that without needing to set up a separate machine or dual boot.&lt;/p>
&lt;p>These instructions will help you get it set up and use it to build and run code:&lt;/p>
&lt;p>
&lt;a href="https://computerscience.chemeketa.edu/guides/wsl/" target="_blank" rel="noopener">WSL Installation and Use Guide&lt;/a>&lt;/p>
&lt;h3 id="arrays">Arrays&lt;/h3>
&lt;p>Pointers and arrays are surprisingly interchangeable in C/C++.&lt;/p>
&lt;p>Read 22.7-22.8.&lt;/p>
&lt;p>Then do the Ch 22 Exercises.&lt;/p>
&lt;p>This optional video reviews some of the concepts:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/AdH_F4eU4pw" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Arrays">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;h3 id="container-classes">Container Classes&lt;/h3>
&lt;p>Read 22.10-22.15 on using classes to manage memory.&lt;/p>
&lt;p>This optional video explains the core ideas:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/lrxpjykkbz4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Container Class">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;p>And this one explains the copy constructor and assignment operator:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/AY0dCEauFMY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Rules of Three">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;h3 id="tools-for-managing-memory">Tools for Managing Memory&lt;/h3>
&lt;p>&lt;em>Optional&lt;/em>&lt;/p>
&lt;h4 id="garbage-collection-and-smart-pointers">Garbage Collection and Smart Pointers&lt;/h4>
&lt;p>You may be starting to realize that managing memory on our own is
difficult and error-prone. Fortunately, it is not something that we
always have to do. Many programming languages provide tools to help
remove some of the burdens.&lt;/p>
&lt;p>This video introduces two of these tools - garbage collection and smart pointers:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/yq1J9OiKqu8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Garbage Collection/Smart Pointers">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;h4 id="rust">Rust&lt;/h4>
&lt;p>Rust is a programming language that uses ownership of memory as
one of its core design principles. In Rust, the goal is to never have
memory that is &amp;quot;shared&amp;quot;. All memory is owned by exactly one reference.
We may let the memory be borrowed temporarily by something like a
function, but the original reference cannot use the memory while it
is borrowed and the memory may only be borrowed by one reference at a time.&lt;/p>
&lt;p>This video introduces this way of thinking about memory:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/6eCV-Q-kjX4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Rust Borrowing">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;h3 id="rule-of-five">Rule of Five&lt;/h3>
&lt;p>&lt;em>Optional&lt;/em>&lt;/p>
&lt;p>In modern C++ there are two other operators related to the rule
of three: the move constructor and move assignment operator. They are used
to write efficient code, but are not necessary. Failing to use them
does not cause the same kind of errors that forgetting to implement a
destructor or custom assignment operator does. This level of efficiency
is the kind of thing a professional C++ developer should care about -
but for now we have better uses for your brain cells.&lt;/p>
&lt;p>If you want to learn more about them check
the learncpp.com coverage of
&lt;a href="https://www.learncpp.com/cpp-tutorial/move-constructors-and-move-assignment/" target="_blank" rel="noopener">move constructor and move assignment operator&lt;/a>.&lt;/p></description></item><item><title>Week 8 - Templates and Array Lists</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week08/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week08/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Create and use generic functions using templates&lt;/li>
&lt;li>Create and use generic array-based data structures&lt;/li>
&lt;li>Describe how array based lists implement common operations&lt;/li>
&lt;/ul>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>Start
&lt;a href="#templates">Templates&lt;/a> (Ch 23.1-23.5)&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>Continue
&lt;a href="#templates">Templates&lt;/a> (Ch 23.6-23.7)&lt;/li>
&lt;li>Start
&lt;a href="#array-lists">ArrayLists&lt;/a> (Ch 23.8-23.10)&lt;/li>
&lt;li>Do Ch 23 Exercises 1&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>Finish
&lt;a href="#array-lists">ArrayLists&lt;/a> (Ch 23.11-23.15)&lt;/li>
&lt;li>Do Ch 23 Exercises 2&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>Do assignment&lt;/li>
&lt;li>
&lt;a href="#regular-expressions">Regular Expressions&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="activity-outline">Activity Outline&lt;/h2>
&lt;h3 id="templates">Templates&lt;/h3>
&lt;p>Read Ch 23.1-23.7.&lt;/p>
&lt;p>These optional videos cover the basics of templates and how to include template code in your project:&lt;/p>
&lt;p>Templated functions (Ch 23.1-23.4):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/Z0-Mjt7bx68" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Templated Functions">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Including templated code (Ch 23.5):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/zx3tHR0H2eA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Including Templated Code">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Templated structs and classes (Ch 23.6-23.7):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/xEYVIqbAhZY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Templated Data Types">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h3 id="array-lists">Array Lists&lt;/h3>
&lt;p>Read Ch 23.8-23.15.&lt;/p>
&lt;p>These optional videos cover the basics and more advanced features of array lists:&lt;/p>
&lt;p>Array List basics (Ch 23.8-23.10):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/yXVxxc-wOoU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Array List Basics">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;br>
&lt;p>Array List advanced (Ch 23.11-23.14):
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/4-SsUuqXsds" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Array List Advanced Features">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h3 id="regular-expressions">Regular Expressions&lt;/h3>
&lt;p>Regular expressions don't relate to anything else in this week. And nothing
we do in the future will build on them. So on one hand they are are a
non-essential detour. On the other hand, there are situations where they
are an indispensable tool .&lt;/p>
&lt;p>Other than a few book exercises, you won't be assessed on regular expressions.
But any time you invest in learning them will likely pay off in the long run.
Not only are they a useful programming tool, but they are invaluable for
searching and manipulating text in editors and command line tools.&lt;/p>
&lt;p>Read Ch 21.15-16&lt;/p>
&lt;p>This optional video covers them:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/hzOPvAUbrA0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;h4 id="regex-tools-and-references">Regex Tools and References&lt;/h4>
&lt;ul>
&lt;li>
&lt;a href="http://www.debuggex.com" target="_blank" rel="noopener">Online regex tester&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://jex.im/regulex/" target="_blank" rel="noopener">Regex visualizer&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://regexone.com/" target="_blank" rel="noopener">RegexOne Tutorial&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Week 9 - Recursion and BigO Intro</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week09/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week09/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Trace recursive algorithms by hand&lt;/li>
&lt;li>Write recursive algorithms&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#recursion-basics">Recursion Basics&lt;/a> (Ch 24.1-24.4)&lt;/li>
&lt;li>Do Recursion Practice WS&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#recursion-design">Recursion Design&lt;/a> (Ch 24.5-24.8)&lt;/li>
&lt;li>Start Ch 24 Exercises 1 and 2 (Remember it is better to do part of each set rather than all of one and none of the other)&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#advanced-recursion">Advanced Recursion&lt;/a> (Ch 24.9-24.12)&lt;/li>
&lt;li>Continue Ch 24 Exercises 1 and 2&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#big-o">BigO Basics&lt;/a>&lt;/li>
&lt;li>Check out assignment&lt;/li>
&lt;/ul>
&lt;div class="alert alert-warning">
&lt;div>
The final is coming up. Check the discussion board for details.
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="activity-outline">Activity Outline&lt;/h2>
&lt;h3 id="recursion-basics">Recursion Basics&lt;/h3>
&lt;p>Read Ch 24.1-24.4&lt;/p>
&lt;p>Do the Recursion Practice WS. It and a key are available in Canvas.&lt;/p>
&lt;p>This optional video reviews the basics of recursion:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/sYAEIlf92t8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Recursion Basics">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;p>And this brief one explains why we need recursion:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/lozk2jodEHo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Why Recursion">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;h3 id="recursion-design">Recursion Design&lt;/h3>
&lt;p>Read Ch 24.5-24.8&lt;/p>
&lt;p>Work on the two exercise sets for Ch 24.
The second exercise set focus on using vectors and does not depend
on the first one. You will likely find it easier than some of the problems in the first set, so if you get stuck on the first set, you can switch to the second one and come back to the first one later.&lt;/p>
&lt;p>This optional video covers the basics of designing of recursive algorithms:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/1nnDYAPLv7w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Designing Recursion">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;p>While this one covers using extra parameters to maintain state in recursive algorithms:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/_5zetQ1KRjU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Example Recursive Algorithms">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h3 id="advanced-recursion">Advanced Recursion&lt;/h3>
&lt;p>Read Ch 24.9-24.12.&lt;/p>
&lt;p>This optional video covers tail recursion:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/Y6-xK3Ci1kc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Advanced Recursion">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;p>And this one covers recursive algorithms that make multiple recursive calls:
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/YJig_G9Y38w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Multiple Recursive Calls">&lt;/iframe>
&lt;/div>
&lt;/div>&lt;/p>
&lt;h3 id="big-o">Big-O&lt;/h3>
&lt;p>Read Ch 25.1-25.3 and 25.5 (ignore 25.4 for now)&lt;/p>
&lt;p>This video reviews the core ideas:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/ESGdXaPb8ec" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Big O Review">&lt;/iframe>
&lt;/div>
&lt;/div></description></item><item><title>Week 10 - Searches and Sorts</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week10/</guid><description>&lt;h2 id="learning-objectives">Learning objectives&lt;/h2>
&lt;p>Upon finishing this week, you should be able to:&lt;/p>
&lt;ul>
&lt;li>Write a binary search&lt;/li>
&lt;li>Write various quadratic sort algorithms&lt;/li>
&lt;li>Write MergeSort&lt;/li>
&lt;li>Identify the efficiency of various search and sort algorithms&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="suggested-pacing">Suggested pacing&lt;/h2>
&lt;h3 id="day-1">Day 1&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#search">Search&lt;/a> (Ch 24.1-24.5)&lt;/li>
&lt;/ul>
&lt;h3 id="day-2">Day 2&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#quadratic-sorts">Quadratic Sorts&lt;/a> (Ch 24.6-26.8)&lt;/li>
&lt;li>Do Ch 26 Exercises&lt;/li>
&lt;/ul>
&lt;h3 id="day-3">Day 3&lt;/h3>
&lt;ul>
&lt;li>
&lt;a href="#merge-sort">Merge Sort&lt;/a> (Ch 26.9-26.12)&lt;/li>
&lt;/ul>
&lt;h3 id="day-4">Day 4&lt;/h3>
&lt;ul>
&lt;li>Final review&lt;/li>
&lt;li>See the review guide in Canvas&lt;/li>
&lt;/ul>
&lt;div class="alert alert-warning">
&lt;div>
If you have not already done so, schedule your final. See the discussion board for details.
&lt;/div>
&lt;/div>
&lt;hr>
&lt;h2 id="activity-outline">Activity Outline&lt;/h2>
&lt;div class="alert alert-info">
&lt;div>
We only have briefly covered Big-O in this course. In CS260, we will dive into the rest of Ch 25.
Until that point, don't worry about understanding all the arguments about the efficiency of various algorithms. You should know which category of efficiency each algorithm falls into and have a general idea of why, but you don't need to be able to reproduce the arguments for why that is the case.
&lt;/div>
&lt;/div>
&lt;h3 id="search">Search&lt;/h3>
&lt;p>Read Ch 26.1-26.5&lt;/p>
&lt;p>These videos review the two approaches and their efficiency:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/Pp0_OlF3kkc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Searches">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/pJOPao7uDIs" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Search Efficiency">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;h3 id="quadratic-sorts">Quadratic Sorts&lt;/h3>
&lt;p>Read Ch 24.6-26.8 about insertion sort and selection sort.&lt;/p>
&lt;p>This video reviews the algorithms and their efficiencies:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/bI1VFczJi4E" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Quadratic Sorts">&lt;/iframe>
&lt;/div>
&lt;/div>
&lt;br>
&lt;h3 id="merge-sort">Merge Sort&lt;/h3>
&lt;p>Read Ch 24.9-26.12.&lt;/p>
&lt;p>This video covers Mergesort. Coverage of the efficiency starts at ~7:00:&lt;/p>
&lt;div class="video-block" style="position: relative; width: 500px; max-width: 100%;">
&lt;div class="youtube" style="position: relative; width: 500px; height: 281px; max-width: 100%;">
&lt;iframe src="https://www.youtube.com/embed/DXENsL-n_xA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Merge Sort">&lt;/iframe>
&lt;/div>
&lt;/div></description></item><item><title>Finals Week</title><link>https://computerscience.chemeketa.edu/courses/cs162/202530/week11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://computerscience.chemeketa.edu/courses/cs162/202530/week11/</guid><description>&lt;p>The final is an in-person, pen-and-paper exam during the
&lt;a href="https://www.chemeketa.edu/programs-classes/academic-calendar/" target="_blank" rel="noopener">scheduled final time&lt;/a>.&lt;/p></description></item></channel></rss>