CSC 207 2023S, Class 01: Getting started
- Notes and news
- Upcoming work
- Extra credit
- Course goals
- Course structure
- Academic honesty & LLMs
- ADTs and data structures
- A quick intro to object-oriented design
- Designing a stack ADT (an exercise)
News / Etc.
- Welcome to CSC207!
- I’m Sam (or SamR)
- Our class mentors are Pom Dao and Micah Cantor.
- Since it’s the first day of class, I will take attendance. (It will take
me a few weeks to learn all of your names.)
- “Hi, my name is FORENAME SURNAME.”
- “You can call me PRIMARY_NAME.”
- Optional: “My pronouns are ….”
- “If you must address me by surname, you can call me
- “This semester, I’m excited about TOPIC”
- Seeing people.
- Making money playing card games.
- Holiday season.
- Visit of cool author(s) to campus. (Sept. 6)
- The heat wave. Or maybe the end thereof. [x2]
- Learning Piano.
- Meet new people and learn new things.
- Making snarky suckup comments.
- Collapsing from heatstroke on the soccer field (or ten-minute periods)
- Grading for CS.
- Bad jokes.
- A/C [x2]
- Learning Java [x2]
- Learning OOP.
- Learn more about CS
- Cooking (and avoiding the dining hall)
- Living in a single [x2]
- Living in a triple
- LIving in a bigger dorm room
- Explore Iowa
- Figuring out why MC Cantor considers this the core of the major.
- Read the syllabus and answer questions on it [email]
- Tell me about yourself
- Do some readings
- All will be mailed to you.
- Scholar’s Convocation with President Harris, 11:00 a.m., 31 August 2023, JRC 101.
- Cool book talk on Sep. 6.
- There are people who care about you. Take care of yourself for their
sake (as well for your own).
- Moderation. Decide what’s right for you; don’t give in to
- Consent is ESSENTIAL.
- Where you first seriously exercise your skills as a computer scientist
and as a software developer.
- As a computer scientist,
- design and build algorithms
- algorithms are mathematical formulae that you use to accomplish goals
- revised: algorithms are sets of unambigious and terminating instructions that you use to accomplish
- Goal: That we can use to solve many problems.
- we often implement the algorithms (and learn from doing so)
- analyze algorithms: correctness and efficiency
- design and build data structures and ADTs
- data structures are ways to represent or organize information (often
with an understanding of how they are stored in memory)
- ADT: Abstract Data Type - another way to think about structuring
- ADT: Tend to describe what we do with the data.
- Data Structures: Tend to describe how
- We’ll look at both.
- Learn about “the core literature”: (many of) the data structures and
algorithms that every competent computer scientist should know
- Software developer
- Collaborative version control systems (Git, GitHub)
- Testing - Building your skills
- Object-oriented programming
- Experience building larger systems (or at least systems that
require more than one or two files).
- See the syllabus.
- We’re using mastery grading.
- Not everything is figured out.
- Tokens are available.
- Sam has office hours at random times, use the booiking software if possible.
- Sam responds to DMs and email.
- Warning! Sam is not as bad as PM, but he’s close. He’ll try to do better.
- How do we earn tokens? Use Gradescope.
Designing a stack ADT (an exercise)
Reminder: ADT is “abstract data type”, the “what” not the “how”.
- Philosophy: A stack is a collection of values with the Last-in, First-out policy
- Uses (use cases): We would use a stack for …
- Brazilian card games.
- A stack of papers (e.g., grading)
- Layering in winter.
- Methods (procedures): These are the most important procedures to provide.
Sam is a minimalist;
- Add (push): in C, we’d write something like add(Stack *s, Value v);
in Java. we’ll write
- Empty: Is the stack empty.
bool s.empty(). In Scheme, we
could have used the much clearer
- Remove (pop): Remove and return the top thing on the stack
- NOT reverse; it’s not a core application (except for stacks
used for Brazilian card games).
- NOT list contents.
- Look at the top element (top)
- Is the stack full? (maybe)
- Create the stack
Stack buildStack(TypeOfData, size)
- Eliminate the stack
- Side note: Write things down!
- Helpful note: I post these notes on our course Web site. Stay tuned.
- Less helpful note: I also post recordings.
- PSA: Covid is back on campus. Consider masking. Masks available in our classroom.