Skip to content

CS 315-01 Lecture/Lab (Fall 2025) — Meeting Summary

  • Date: Sep 11, 2025
  • Time: 08:14 AM Pacific Time (US and Canada)
  • Meeting ID: 886 4953 2573

Quick Recap

The session focused on: - The role of productive struggle in computer science learning and the limits of relying on AI for answers. - Technical foundations of assembly programming: register usage, stack management, and function calls. - Detailed guidance on caller-saved vs. callee-saved registers. - Implementing recursion in assembly, including a recursive factorial example. - Encouragement to work independently on Project 2 with support via office hours and GDB.

Key Topics and Highlights

AI and the Future of CS

  • Emphasized learning through effort and understanding rather than using AI tools (e.g., ChatGPT) to bypass concepts.
  • Exams assess problem-solving and conceptual mastery; proficiency requires practice and perseverance.
  • AI will transform but not replace the need for technical expertise.
  • Introduced recursion and recommended reviewing the guide on function calls and complex functions.

Register Preservation and Stack Allocation

  • Caller-saved registers (A0–A7) must be preserved by the caller if they will be needed after a call.
  • Callee-saved registers (S0–S11) must be preserved by the callee if modified.
  • The stack pointer (SP) is caller-saved.
  • Demonstrated saving/restoring registers on the stack using SD and LD.
  • Stack allocation must be in multiples of 16 bytes.
  • Different data sizes (bytes, words, doubles) require appropriate load/store instructions.

Avoiding Infinite Loops in Assembly

  • To prevent infinite loops across function calls, properly save and restore the return address (RA) on the stack.
  • Demonstrated examining stack memory values to verify correctness.
  • Class materials, summaries, and recordings are posted on the course site; today’s content will be added by end of day.

Assembly Function Call Implementation

  • Showed two approaches for handling multiple function calls.
  • Highlighted correct management of caller-saved registers and temporary registers.
  • Emphasized organizing stack space to avoid conflicts and optimize code.

Register Preservation and Recursion

  • Reinforced preserving registers that called functions may modify—even if a specific function currently does not.
  • Discussed recursion for processing data structures such as trees and graphs.
  • A 10-minute break occurred between register usage and the recursion segment.

Recursive Factorial in Assembly

  • Walked through setting up arguments, managing stack frames, and handling return values.
  • Stressed adherence to calling conventions and saving RA across recursive calls.
  • Visualized stack growth per recursive call, clarifying base case and recursive step.
  • Planned to use GDB for single-stepping and diagramming stack frames across recursive calls.

Recursive Algorithms and Conditionals in Assembly

  • Demonstrated recursive patterns with clear base cases and stack operations.
  • Translated complex conditionals (e.g., x >= a and x <= b) using inverse comparisons.
  • Encouraged independent progress on Project 2, using GDB, and attending office hours.

Next Steps (Extracted and Ranked)

  1. Complete Project 2 independently; use GDB to debug and validate behavior.
  2. Review the guide on function calls, complex functions, and recursion.
  3. Attend office hours for targeted support on assembly, stack frames, and debugging.
  4. Practice preserving caller-saved and callee-saved registers in sample functions.
  5. Single-step through the recursive factorial in GDB and sketch stack frames.
  6. Revisit conditional translation patterns (e.g., range checks via inverse comparisons).
  7. Check the course website for uploaded materials, summaries, recordings, and today’s updates (to be posted by end of day).

Resources and Logistics

  • Materials, summaries, and recordings are available on the course website; today’s content will be added by end of day.
  • Office hours are available for help with Project 2, assembly conventions, and GDB.