Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSC307 Lecture 01

CSC307 Lecture 01

Introduction to Software Engineering
Course Presentation
(202601)

Day 1 establish a clear distinction between programming and software engineering. While programming focuses on making code work, software engineering is concerned with building systems that can be understood, maintained, extended, and evolved by teams over time. The course emphasizes that software is created for people—not computers—and that engineering decisions must account for three central dimensions: people, quality, and cost. Students are encouraged to move beyond tool-centric thinking and instead adopt an engineering mindset grounded in structure, responsibility, and long-term sustainability.

A central metaphor introduced in these lectures contrasts crafting with manufacturing. Programming is framed as a creative, exploratory activity—valuable, but insufficient at scale. Software engineering, by contrast, resembles manufacturing: it requires repeatable processes, measurable quality, planning, and coordination. Engineers must make defensible decisions, justify trade-offs, and design systems that can change without being rebuilt from scratch. This perspective explains why the course prioritizes requirements analysis, architectural design, testing, integration, and deployment over isolated coding tasks.

Finally, the lectures clarify the role of Object-Oriented Programming and Java within the course. OOP is treated not as a language feature set, but as a tool for reasoning about system structure, responsibility, and teamwork. Java is used deliberately for its explicitness, helping students see design decisions rather than hide them behind compact abstractions. Throughout the course, students are expected to work collaboratively, communicate effectively, and produce software that others can read and build upon—marking the transition from writing code for grades to engineering software for real-world use.

Avatar for Javier Gonzalez-Sanchez

Javier Gonzalez-Sanchez PRO

January 05, 2026
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info o ffi ce: 14 -227

    CSC 307 Introduction to Software Engineering Lecture 01. Course Presentation
  2. First n a me L a st n a me

    Dr. J a vier Gonz a lez-S a nchez j a viergs@c a lpoly.edu www.j a viergs.info Contact Information 3
  3. 4 Note | Spanish naming customs In Spanish naming conventions,

    a person uses two surnames— one from each parent—so in my case González-Sánchez is the full family name. This means I can be correctly addressed as Dr. González or Dr. Gonzalez-Sanchez, but not Dr. Sánchez. https://en.wikipedia.org/wiki/Spanish_naming_customs
  4. www.j a viergs.info/te a ching/ At CSU: Softw a re

    Engineering (CSC 305, CSC 307, 308, 309, 508, 509) a nd (CSC 364) Hum a n-Computer Inter a ction (CSC 486 a nd CSC 570) 6 Teaching
  5. Your Turn • Wh a t is your n a

    me (or how you go by it)? • Are you pro f icient in progr a mming with J a v a ? • Wh a t is Your experience progr a mming (internships, person a l projects, h a ck a thons, others)?
  6. ❌ JavaScript ❌ Node.js ❌ React ❌ HTML ❌ CSS

    ✅ Software Engineering 11 This is NOT…
  7. 13 Who is Alan Kay Computer scientist (Xerox, Apple, HP,

    Disney, MIT, Stanford…). His ideas on objects, message passing, and modular, human-centered system design strongly influenced modern programming languages and helped establish software development as an engineering discipline rather than just coding. https://en.wikipedia.org/wiki/Alan_Kay
  8. 15 This is About Engineering • M a nuf a

    cturing vs. Cr a fting Softw a re • Code is me a nt for hum a n consumption, a nd it’s me a nt for computer consumption. • Cre a ting softw a re together but not scr a mbled
  9. 20 Analogy Analysis understanding how systems work asking all the

    important questions before you start hammering nails Design creating solutions that meet requirements, budget, improving performance, cost, efficiency, or safety. Follow standards Use what already exists! Implementation translating ideas into functioning realities (Not always with their own hands)
  10. 21 Topics Deployment Softw a Testing Coding, Progr a Developing

    Softw a Design Requirement Engineering [+]
  11. 28 Grading Assignments L a bs + Quizzes Attend a

    nce & P a rticip a tion 20% 30% 10% 100% Project Fin a l Project Fin a l Ex a m 5% 20% Peer Ev a lu a tion 15%
  12. 29 Grading >= 96.5 A >= 93 A- >= 89.5

    B+ >= 86 B >= 82.5 B- >= 79 C+ >= 75.5 C >= 72 C- >= 68.5 D+ >= 65 D >= 61.5 D- < 61.5 F
  13. 35 Homework: Review the Java Style Guide Read Java Style

    Guide https://google.github.io/styleguide/javaguide.html Apply it Always!
  14. CSC 307 Introduction to Software Engineering Javier Gonzalez-Sanchez, Ph.D. [email protected]

    Winter 2026 Copyright. These slides can only be used as study material for the class CSC307 at Cal Poly. They cannot be distributed or used for another purpose.