Agenda
- Course Introduction and Structure
- Recursion
Course Introduction and Structure
What do you know?
- basic data-types and variables
int
, char
, String
, boolean
- if-then-else statements
- iteration (
for
and while
loops)
- arrays and strings
- defining and using methods
What will this course cover
- objected oriented design: defining and creating
class
es, class hierarchy
- generic programming: interfaces, abstract classes and methods
- simple data structures: linked lists, stacks, queues
- recursion, randomization, and other topics
Course philosophy
- emphasize general design principles
- generic conceptual tools for how to solve problems
- identify small sub-tasks that should be solved
- technical tools to code implementations
- offer greater opportunities for creative expression
What will you do?
- weekly lab assignments (~25%)
- monthly projects (3 total) (~30%)
- weekly quizzes (~25%)
-
actively participate (~20%)
- discussion in lecture
- accountability groups
Weekly Rhythm
- Monday: start working on lab/project, attend lab session
- Tuesday: prepare for lecture: reading, videos, etc.; write some code
- Wednesday: lecture and debrief
- Thursday: prepare for lecture; write some code
- Friday: lecture and debrief; turn in assignment; look at following assignment
How will you do it?
- work collaboratively, but don’t share code
- participate in discussion
- Moodle forums
- Slack channel
- interact with posted materials (readings, videos, etc)
- assume everything is required, unless marked with IYI
The moral
Learning probably doesn’t feel the way you think it should:
[W]hen students experienced confusion and increased cognitive effort with active learning, they perceived this disfluency as a signal of poor learning, while in fact the opposite is true.
– Deslauriers et al. 2019
Zoom for group discussion
- you will spend much of the lecture time working in breakout groups on Zoom
- you will be given a prompt (Google doc)
- you might be asked to code too
- you might be asked to share main points of discussion with class
Collaboration
- collaboration is encouraged
- for work you will submit (labs/projects) do not share code
- discuss problems on a conceptual level
Web Resources
- there are many good resources out that help teach concepts, e.g.,
- there are many forums where you could find code that solves your problems (e.g., StackOverflow)
- often do more harm to your learning
no matter what: always credit your sources (comments in code)
Getting Help
- lab and lecture sessions
- Moodle forums and Slack channel
- evening TA sessions (MW 7–9pm)
- office hours
- email (if other channels are not appropriate)
- peer tutoring available
Grading & Academic Integrity
Course Goals. For you to acquire skills relevant to your life; to challenge you and support your learning.
- to do my job, I need to be able to assess your (individual and collective) understanding as clearly as possible
- assessment is reflected in grades
- attempting to gain an unfair advantage in grading undermines everyone’s work in the class
- no long-term benefit to cheating, larger long-term risks
- short term risk: failing assignment/course, possible disciplinary action by the college
Bill & Ted’s Rule
Be excellent to each other!
Lab Extensions
- programming is a creative endeavor
- opportunity to go beyond following instructions
- solve problems relevant or interesting to you
- grading is subjective
- typically effort and care you put into an assignment are clear