EECS 348 (4 credit hours): Software Engineering • Spring 2026
Meets in person, Tuesdays and Thursdays, 2:00 pm—3:15 pm, Eaton 002
Course website:
https://people.eecs.ku.edu/~saiedian/348/
Professor Hossein Saiedian
Office: Eaton Hall 3012
☎ +1 785-864-8812
@ saiedian AT ku.edu
🌐
people.eecs.ku.edu/~saiedian
Teaching:
people.eecs.ku.edu/~saiedian/Teaching
Office Hours:
Tuesdays and Thursdays, 1:00-2:00 PM (and by appointment)
This course is an introduction to software development fundamentals and software engineering. It incorporates a thorough introduction to a compiled programming language. A baseline knowledge of tools and utilities is covered including the shell, common programs, version control, IDEs, editors, and build tools. Topics include: software development principles (e.g., design patterns, modularity, loose coupling), extending larger codebases, developing larger codebases, continuous integration, continuous deployment, debugging, unit testing, test-driven development, and databases. Grade of C (not C-) required to progress. Prerequisite: EECS 268.
1. Master the SDLC. Gain a solid understanding of the software development process, from concept to deployment. Explore various development models to choose the right approach for your projects.
2. Project management fundamentals. Learn essential project management skills like planning, scheduling, and communication. Effectively manage your work and contribute to successful software projects.
3. Teamwork for software development. Understand the importance of collaboration in software engineering. Learn to work effectively within teams to design, develop, and deliver high-quality software.
4. Core software engineering concepts. Understand the fundamentals of requirements engineering, architecture, design, testing, implementation, and deployment. Build robust and maintainable software systems.
5. Essential tools for software engineers. Master industry-standard tools like Git/GitHub for version control and IDEs for efficient coding. Explore programming languages for various tasks (C/C++, shell scripting, web development) and server-side scripting (e.g., PHP) for building web applications, and SQL for backend database access and processing.
Toye Oloko (toye @ ku.edu)
Liangqin Ren (liangqinren @ ku.edu)
All labs meet in person; attendance is required:
Wednesday 01:00 - 02:50 PM, EATN 1005B, Liangqin Ren
Thursday 09:00 - 10:50 AM, EATN 1005C, Toye Oloko
Thursday 11:00 - 12:50 PM, EATN 1005B, Toye Oloko
Friday 12:00 - 01:50 PM, EATN 1005B, Liangqin Ren
This course does not have a required textbook, but the following are a couple of popular textbooks in software engineering:
![]() |
Ravi Sethi Software Engineering Cambridge Press, 2022. |
![]() |
Roger Pressman and Bruce Maxim Software Engineering: A Practitioner's Approach 9th edition, McGraw-Hill, 2020. |
There are plenty of resources, tutorials, and YouTube videos on UML.
Two interesting professional software engineers' podcasts:
Students are responsible for lecture notes, reading assignments, as well as items distributed during the classroom sessions. Important reading materials as well as lecture slides will be placed on Canvas:
Lecture notes (Canvas)
Readings (Canvas)
Project resources (Canvas)
Assignments. Assignments may take a variety of forms, including labs, homework exercises, in‑class activities, or mini‑projects. Students are expected to complete assigned work both inside and outside the classroom as appropriate for the course. In courses that include hands‑on laboratory components (such as software engineering course), certain lab activities must be completed during scheduled lab sessions under TA supervision to ensure academic integrity; work completed outside the lab in these cases will not receive credit. Full assignment descriptions, requirements, and due dates are provided on Canvas.
Exams and quizzes. Exams and quizzes will be conducted in person and administered through Canvas. All exams and quizzes are closed-book and closed-notes.
Students must bring a laptop or tablet with a sufficiently large screen capable of accessing Canvas. During an exam or quiz, the only permitted application is the Canvas app or a web browser with a single tab open to Canvas. All other applications, files, browser tabs, windows, and electronic resources must be closed before the assessment begins and may not be accessed during the assessment.
To maintain academic integrity, students must remain focused on the exam window for the entire assessment. Canvas records instances of "Stopped viewing the quiz-taking page", and such instances may be reviewed and investigated as potential academic integrity violations.
Only devices and applications explicitly required for taking the assessment are permitted. Smartphones, smartwatches, earbuds, headphones, Bluetooth devices other than a mouse or stylus, remote-access software, screen-sharing software, generative AI tools, and similar technologies are prohibited unless expressly authorized by the instructor. Because these technologies can facilitate communication, information access, or other unauthorized assistance, their use is not permitted during exams or quizzes.
Screen brightness must remain at a normal, visible level throughout the assessment. The use of display dimmers, screen-darkening software, privacy overlays, or any method intended to obscure screen contents is not permitted.
Violations of the above testing requirements may be treated as violations of the University's academic integrity policy and may result in disciplinary action.
Submission format policy. All course work—including
assignments, reports, and projects—must be typeset and
submitted electronically via Canvas. Please note that
“typeset” refers to work composed using digital tools
(e.g., word processors,
,
image editing software, etc.).
Handwritten or hand-drawn submissions will not be accepted.
Students are responsible for engaging with all course materials, including lecture slides, topics covered in class discussions, assigned readings, and supplementary resources (e.g., handouts, code samples, or project guidelines) distributed during class sessions. All materials will be posted on Canvas, and students are expected to regularly check Canvas for updates to ensure they remain informed and prepared. Active engagement with these resources is critical for success in assignments, projects, and exams, and aligns with the course’s emphasis on professional responsibility and self-directed learning.
Course announcements (Canvas)
Lecture slides (Canvas)
Readings (Canvas)
Project resources (Canvas)
Throughout the semester, we may host guest speakers who bring
valuable insights and real-world perspectives related to the
course material. Attendance during these sessions is especially
important, as guest speakers may not provide lecture slides
or written materials. Students are expected to take careful
notes and engage respectfully. These sessions may include
content relevant to assignments or exams.
This course is not curved in the traditional sense. I do not
set a fixed class average (e.g., a "B") and scale grades to fit
a predetermined distribution. Instead, I ask one fundamental
question: “Has this student mastered the material?”
If every student demonstrates clear mastery of the course
content, then every student earns an A. Grades are not a
measure of relative ranking—they are a reflection of your
personal understanding and engagement with the work.
I encourage you to shift your focus away from grade
anxiety. Instead, concentrate on being present, asking
questions, exploring ideas, and participating fully in the
learning process. In return, I promise to be fair, transparent,
and extra supportive. We are in this together, and I want each of
you to succeed—not just by earning a grade, but by growing
as scholars and professionals.
I am genuinely invested in your progress, and nothing would
make me happier than seeing every student earn an A through
honest work and intellectual curiosity.
The above said, final course grades will be determined by
the total percentage of points earned. The following standard
scale will be used: Grading philosophy and scale
Week 1: January 20 and January 22
✅Overview of the course
✅Striving for successful teams
✅Minimal product (project) management
✅Intro to Git and GitHub
✅Software life cycle
Week 2: January 27 and January 29
✅Software development models
✅Software products vs software projects
✅Agile software development
An agile (Scrum) case study
A short video: Scrum under 10 minutes
Git and GitHub
Week 3: February 3 and February 5
✅Software tools
✅Requirements case study: a component of a compiler lexical analyzer
✅Domain engineering
✅Requirements engineering
Project management plan assigned (due: February 22)
Shell programming, make
Week 4: February 10 and February 12
✅Why modeling
✅The Unified Modeling Language (UML)
✅UML use case diagrams (for requirements modeling)
Use case modeling; tool: Visual Paradigm (due date extended to 2/22)
Week 5: February 17 and February 19
📝 February 17: Exam 1
✅Introduction to C programming
Structure of a C program: Preprocessor directives, main()
function, basic I/O
Variables, data types, and operators
Control flow: Conditional statements and loops
Functions and scope: Defining and calling functions,
pass-by-value, local vs. global scope
Pointers and arrays: Pointer variables, address and
dereference operators, array declaration
Project requirements assigned (due: March 15) -- In addition to the project requirements, teams are expected to complete the initial iteration of the User Manual.
Note: Creating a preliminary User Manual during the requirements phase is valuable because it forces the team to describe system features in plain, user‑focused language. This process often exposes gaps, ambiguities, or contradictions in the technical requirements and helps ensure the final product remains user‑centered.
Week 6: February 24 and February 26
✅Compiled programs: C/C++ programming
Structures and dynamic memory: pointer arithmetic,
manual memory management
Introduction to object-oriented paradigm: Core concepts:
objects, classes, encapsulation
IDE/compiled programs (C programming), git
Week 7: March 3 and March 5
✅Compiled programs: C/C++ programming (continued)IDE/compiled programs (C programming), git
Week 8: March 10 and March 12
✅Compiled programs: C/C++ programming (continued)
Basic C++ syntax and I/O: Differences from C, namespaces,
std::cout and std::cin streams
C++ functions and references: Function overloading, default arguments,
and pass-by-reference
Classes & objects: Defining classes, creating objects,
constructors, destructors, member functions
Encapsulation and access control: The private, public, and
protected keywords, getters/setters
Inheritance and polymorphism: Base and derived classes,
function overriding, abstract classes
Standard Template Library (STL): Overview and use of key
containers and algorithms
Web programming with HTML, CSS, JS, and PHP
Week 9: March 16 and March 18
Spring break (March 16–22)
Week 10: March 24 and March 26
✅Software architecture
Definition, core principles, distinction between architecture and design
Architectural styles/patterns: monolithic, layered, pipe-and-filter,
data-centered, ...
Architectural models: Organizing diagrams to address different stakeholder concerns
Key quality attributes: Understanding how architecture enables quality
attributes
Documentation and communication: Using architecture views to communicate
Project architecture and design assigned (due: April 12)
Object-oriented programming with C++
Week 11: March 31 and April 2
📝 March 31: Exam 2
✅Software architecture (continued)
✅Introduction to UML class diagrams: modeling requirement and design
Core Elements: Classes, attributes, operations
Fundamental relationships: Association, aggregation,
composition, generalization
Multiplicity and navigation: Defining object quantities and
relationship direction
Advanced concepts: Abstract classes, interfaces, and dependency
relationships
Week 12: April 7 and April 9
✅Detailed-design concepts
Design quality fundamentals: cohesion and coupling
Encapsulation & information hiding: Concealing internal details behind
stable interfaces
Refinement: Translating architectural
components into detailed structures, algorithms
Design documentation: Using UML and pseudocode to
communicate implementation intent
Design patterns: Implementing specific patterns to solve local design problems
Project implementation assigned (due: May 7)
SQL programming
Week 13: April 14 and April 16
✅Software quality assurance
✅Software testing
✅Testing coverage criteria
UML class modeling
Week 14: April 21 and April 23
✅Black box test case generation techniques
Boundary value analysis
Equivalent partitioning
Decision tables
Project test cases assigned (due: May 7)
Project user manual assigned (due: May 7)
Software testing
Week 15: April 28 and April 30
✅White box test case generation techniques
✅Cloud-based software
Regular expressions
AI-assisted coding
Week 16: May 5 and May 7
✅Service-oriented architectures
✅Microservices architecture
✅DevOps and code management
✅Emerging trends in software engineering
Project implementation due: updated project management plan, requirements, design, test cases, C++ code, user manual
Week 17: Finals Week
📝 Final Exam: Comprehensive final, Friday, May 15, at 1:30–4:00 pm
iClicker is an interactive classroom response system that allows students to engage actively by answering questions and participating in polls. The University of Kansas has secured an iClicker subscription for classroom use, and the EECS department is incorporating this system into its courses to boost student engagement. Participation in the iClicker community is mandatory for this course.
When an iClicker notification is sent, students are briefly polled to confirm receipt. If a student encounters a technical issue or need more time, they should raise their hand to be acknowledged and if the issue is not resolved, meet with the instructor immediately after class to manually adjust the iClicker record.
Responding to iClicker notifications when not physically present in the classroom is strictly prohibited. It constitutes a deliberate act of academic dishonesty and a direct violation of the University of Kansas code of conduct. Logging attendance or submitting responses while absent undermines the integrity of our learning environment and disrespects both the instructor and fellow students who are fully participating. Violations will result in a mandatory meeting with the EECS department chair to address the misconduct and its implications.
Generative AI tools, such as ChatGPT, GitHub Copilot, Gemini, and others, can be valuable resources for learning. When used appropriately, they may assist in brainstorming, exploring ideas, and refining drafts. However, they must never replace your own intellectual work.
These tools are akin to the writing center consultants, the EECS programming tutors, and lab assistants: they can guide and support but must not generate final submissions. Submitting content primarily generated by AI is a violation of academic integrity, comparable to submitting work completed by someone else.
Unless explicitly permitted, all coursework must reflect your original understanding, reasoning, and expression. Use of generative AI tools is not permitted for any assignment unless the instructor explicitly authorizes it for that specific assignment; where such use is authorized, it must be disclosed via a brief reflection describing how and why the tool was used, the specific prompts entered, how the output was validated and revised, and any challenges or limitations encountered.
Failure to disclose use of AI tools or submitting AI-generated work as your own will be treated as academic misconduct. Minimum consequences include a zero on the assignment. Depending on severity, further penalties may include failure in the course and formal referral to the School of Engineering disciplinary committee.
This course is designed to build your skills—not evaluate the performance of generative tools. Authentic engagement with course challenges leads to meaningful growth. Overreliance on AI undermines both your learning and the integrity of our academic community.
Intellectual honesty is not optional; it defines your
identity as an engineer, a scholar, and a professional.
The University of Kansas, the School of Engineering, and the Department of Electrical Engineering & Computer Science (EECS) maintain a zero-tolerance policy toward academic dishonesty and misconduct. All students enrolled in this course are expected to uphold the highest standards of integrity and professionalism in their academic work.
Academic dishonesty includes, but is not limited to:
The minimum consequence for an academic integrity violation is a zero on the item in question (e.g., lab, assignment, quiz, or exam). Depending on severity, penalties may include a grade reduction, a failing grade for the course, and formal referral to the School of Engineering's disciplinary committee for further review and sanctions.
Please also see KU's academic misconduct policy
LMS features. During exams or quizzes, only one device should be used, with solely the Canvas app or a single browser tab for Canvas open. Having any other tab, app or file open will be considered a violation of academic integrity. To further facilitate academic integrity, the following features of Canvas will be utilized:
Code of student rights and responsibility: Code of Student Rights and Responsibilities
Attendance expectation. Regular attendance is essential for success in this course. Attendance will be recorded throughout the semester via iClicker for classroom meetings (and, if the course includes a lab component, via a sign-up attendance sheet for lab sessions). More than three unexcused absences (in classrooms or labs) will result in a one‑letter reduction in the final course grade, which will be applied when grades are posted at the end of the term.
Course-specific attendance policy (EECS 581). Because this course meets once per week, a single absence carries the weight of two regular sessions. Accordingly, no more than two unexcused absences will be permitted (equivalent to four regular sessions under the standard format); a third unexcused absence will result in the one-letter grade reduction described above. This applies to the Tuesday classroom sessions; TA/Scrum-meeting participation is assessed separately, using the project rubric posted on Canvas.
Late-work, makeup policy. Late work and make‑up opportunities for labs, quizzes, and exams are available exclusively for students with excused, documented, and approved absences, ensuring full support for those with qualifying circumstances.
Excused absence requests. Requests for excused absences must be submitted in advance and approved by the instructor, except in cases of emergency. Supporting documentation must accompany all requests. For emergencies, notify the instructor as soon as possible following the absence. Examples of excusable absences include:
If a student experiences a confidential personal or family situation that does not fall under the above categories, they may consult CAPS or their academic advisor, who can then contact me on their behalf.
Make-up poloicy and integrity. For excused absences, quizzes and exams must be made up before the content is reviewed or the answer key is released. Labs, assignments, or homework are due within one week of the absence. Additional flexibility will be provided for special circumstances.
By taking a make-up assessment, you affirm that you have an excused absence and have not sought or received any information about its content from prior test-takers. Violating this pledge is academic misconduct (see above).
Responsibility for missed work. Students who miss class are responsible for obtaining any missed materials.
Classroom conduct policy:
Students are expected to arrive on time, remain attentive, and
conduct themselves professionally. Please avoid behaviors that
disrupt the learning environment or instructor presentations,
and note that profanity is strictly prohibited. Additionally,
students are encouraged to actively engage during class
sessions by asking questions, contributing to discussions,
and providing feedback.
Canvas announcements.
Important course updates will be posted via Canvas
Announcements. You are responsible for checking Canvas
regularly; email notifications may also be sent depending on
your account settings.
Email communications
Grade and absence clarification or correction.
We want to ensure your records are accurate and fair. If
you believe a grade on an assignment, lab, quiz, or exam is
incorrect, you must submit an grade correction request within one
week of receiving the graded work. Similarly, if you need to
submit documentation for an excused absence after the fact, you
must do so within one week of the absence. Failure to address
these matters within this one-week timeframe will result in
the decision becoming final, ensuring timely resolution and
consistency for the entire class.
Technical problems.
Submit a support request help at:
https://tsc.ku.edu/request-support-engineering-tsc.
Electronic device policy:
Cell phones must be silenced before entering the
classroom. While laptops, tablets, and phones are welcome for
note-taking and approved tools like iClicker, non-academic uses
(such as social media or web surfing) must be avoided to prevent
distractions. Audio should remain turned off. Additionally,
devices may be used to photograph whiteboard notes or projects,
provided the shots exclude the instructor and other students.
Incomplete grade policy.
An Incomplete ("I") grade is reserved for exceptional
circumstances beyond your control and must be resolved within
the instructor's timeframe (up to one year before automatically
converting to an "F" or "U"). For full details please review KU policies:
here and
here.
Accommodations for students with disabilities.
The University of Kansas is committed to equal opportunity
and accessible learning. Requests for special accommodations
should be made through KU Student Access Services.
Nondiscrimination and equal opportunity.
KU strictly prohibits discrimination based on protected
characteristics across all programs and activities. For
full institutional policies, please review KU's statements
on nondiscrimination and the racial and ethnic harassment policy.
Sexual harassment.
KU prohibits sexual harassment and is committed
to preventing, correcting, and disciplining
unlawful harassment and assault. Please review KU's statement on sexual harassment for
details.
Mandatory reporter statement.
As a faculty member and KU employee, I am a mandatory reporter
required to share disclosures of discrimination, harassment,
or sexual violence with the Office of Civil Rights and
Title IX. For confidential support options (such as CAPS,
Watkins Health Care, or the Ombuds Office), please review KU's statement on mandatory reporting.
Commercial note-taking ventures.
Pursuant to KU's commercial note-taking policy,
selling lecture notes or course materials for commercial
gain is strictly prohibited and subject to disciplinary
action. Note-taking provided as an official ADA accommodation
for a student with a disability is exempt.
Concealed handguns.
Individuals choosing to carry concealed handguns must do so
safely and in strict compliance with state/federal laws and KU
weapons policy, which requires that handguns remain under
constant control, fully concealed, holstered with the trigger
covered, and carried with the safety on and no round in the
chamber.
Professors and instructors at the KU School of Engineering
are aware that students sometimes post or access course
assignments, labs, and exam questions on EdTech platforms
(such as Chegg).
Please note that agreeing to an EdTech service's "terms
of service" does not protect you if an academic misconduct
investigation is initiated. Platforms like Chegg retain and
release traceable user data upon request.
Using these services constitutes academic misconduct,
violates the School of Engineering Rules & Regulations,
and can lead to a failing grade in the course, a
transcript citation, and expulsion from the University of
Kansas. Instead, please utilize authorized resources such
as instructor office hours, TAs, and tutoring.
As computing and engineering professionals, you are
expected to know and apply the professional codes of ethics
throughout your academic and professional careers:
As the ACM preamble notes: "Computing professionals'
actions change the world. To act responsibly, they should
reflect upon the wider impacts of their work, consistently
supporting the public good."
Common policies
As an engineering student at the University of Kansas,
all written communications should reflect professional
standards. Please note:
The School of Engineering statement on EdTech
Ethical foundations for technical
professionals
Professor Hossein Saiedian
Electrical Engineering & Computer Science
Eaton Hall 3012
University of Kansas
1520 W 15th St
Lawrence, KS 66045-7621
+1 785 864-8812
saiedian at eecs.ku.edu