EECS 348: Software Engineering -- Spring 2024 (53444)
Tuesdays and Thursdays, 2:30 pm - 3:45 pm, Eaton 002
Teaching website: people.eecs.ku.edu/~saiedian/Teaching
Professor Hossein Saiedian
Office: Eaton Hall 3012
Telephone: 785-864-8812
E-Mail: saiedian AT ku.edu
WWW: people.eecs.ku.edu/~saiedian
Office Hours: Tuesdays and Thursdays, 1:00-2:00 PM (and by appointment)
Agraj Magotra (agrajmagotra@ku.edu), EATN 2005B, W, 3:00-5:00 PM
Toye Oloko (toye@ku.edu), EATN 2005B, Tu, 11:00-1:00 PM
Liangqin Ren (liangqinren@ku.edu), EATN 2005B, W, 3:00-5:00 PM
W 01:00 - 02:50 PM (53510), EATN 1005B, Toye Oloko Labs hours
W 01:00 - 02:50 PM (55162), EATN 1005D, Liangqin Ren
Th 09:00 - 10:50 AM (53511), EATN 1005C, Agraj Magotra
Th 11:00 - 12:50 PM (53512), EATN 1005B, Toye Oloko
F 12:00 - 01:50 PM (53513), EATN 1005B, Liangqin Ren
F 02:00 - 03:50 PM (53514), EATN 1005B, Agraj Magotra
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.
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.
Project management fundamentals. Learn essential project management skills like planning, scheduling, and communication. Effectively manage your work and contribute to successful software projects.
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.
Core software engineering concepts. Understand the fundamentals of requirements engineering, architecture, design, testing, implementation, and deployment. Build robust and maintainable software systems.
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.
The following are two recommended softwre engineering textbooks:
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)
Evaluation criteria. Students will be evaluated as follows:
Weekly labs: 25%Labs: Some of the lab assignments will have to be completed while in the lab and at the presence of the TAs to meet the required academic integrity standards. If those labs are completed outside the lab, they will receive no credit (points).
Term project. The term project will be team-based (teams of 5-6 individuals). The team project requirements will be discussed class. The description of project components (artifacts) will be placed on Canvas. The student teams will have to decide what computing platform. Term projects will have to be implemented in C++. The TAs will provide direction and support for the project artifacts. All project artifacts and code should be maintained on GitHub.
Exams and quizzes will be in-person, in classroom, closed book and notes and on Canvas. Always bring a device that allows you to connect to Canvas to take an exam or quiz. While taking an exam or quiz, no other devices is to be used other than the device used for connecting to Canvas. No other file or app other than Canvas should be open. If using a browser to connect to Canvas, only one tab for connecting to Canvas should be running.
Grading scale
A = 90%..100%
B = 80%..89%
C = 70%..79%
D = 60%..69%
All written work must be typeset and submitted on Canvas.
Week 1: January 16 and January 18
Overview of the course
Striving for successful teams
Intro to Git and GitHub
Software life cycle
Week 2: January 23 and January 25
Software tools
Software development models
Software products vs software projects
Agile software development
Lab 1: Git and GitHub
Week 3: January 30 and February 1
Minimal product (project) management
Requirements engineering
Domain engineering
Why modeling
Project part 1 assigned: Project management plan
Lab 2: Shell programming, make
Week 4: February 6 and February 8
UML use case modeling
UML class modeling
Lab 3: Use case modeling
Week 5: February 13 and February 15
UML class modeling (continued)
Project part 2 assigned: Project requirements
Week 6: February 20 and February 22
More on UML class modeling
Compiled programs: C/C++ programming
Lab 4: UML class modeling (must be completed and submitted in lab); tool: Visual-Paradigm
Week 7: February 27 and February 29
Compiled programs: C/C++ programming
Extra credit lab: UML class modeling (must be completed and submitted in lab); tool: Visual-Paradigm
Week 8: March 5 and March 7
Compiled programs: C/C++ programming
Lab 5: Eclipse/VS IDE, compiled programs, C/C++ programming, git
Week 9: March 12 and March 14: Spring break (no classes)
Week 10: March 19 and March 21
Detailed-design concepts: Modular design, object-oriented design, design patterns
Lab 6: Eclipse/VS IDE, compiled programs, C/C++ programming, git
Project part 3 assigned: Project architecture and design
Week 11: March 26 and March 28
Detailed-design concepts: Modular design, object-oriented design, design patterns
Polymorphic design: operator overloading, template classes, parametric polymorphism (function overloading), abstract and interface classes, static and dynamic binding
🚦
Project part 4 assigned: Project implementation
Lab 7: Web programming with HTML, CSS, JS, and PHP
Week 12: April 2 and April 4
Concepts related to writing programs (documentation, self-describing programs, coding conventions, pre- and post-conditions, interpreters vs compiled programs, the compilation process, "make" and "git")
Software quality assurance
Software testing
Testing coverage criteria
Lab 8: SQL programming
Week 13: April 9 April 11
Black box test case generation techniques
White box test case generation techniques
Project part 5 assigned: Project test cases
Lab 9: Software testingWeek 14: April 16 and April 18
Examples of code-based testingLab 10: Container programming
Week 15: April 23 and April 25
Microservices architecture
Reliable Programming
Security and Privacy
Project part 6 assigned: Project user manual
Lab 11: Regular expressions
Week 16: April 30 and May 1
UML revisited: modeling behavioral properties
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: May 6
🚦
Attendance. Attendance is important and
required. Throughout the semester, attendance may randomly be
taken; each three absences (in classroom or lab) will result
in a letter-grade drop (will show when the final grade is
posted). Furthermore, if a student misses a class session,
he or she will be entirely responsible for learning the
materials missed without the benefit of a private lecture
on the instructor's part. Furthermore, the student will be
responsible for finding out what assignments may have been
given and when they are due, any updates to the term project,
schedule or the course syllabus.
Late-work, makeup policy. No late work will be
accepted. No makeup option (for a lab, quiz, or exam) will be
provided.
Exceptions will be made for
.
Verification (documentation) of an excusable absence will be required.
An excusable absence requests must be submitted in
advance and approved by the instructor, unless it is an
emergency. Verification documents must be attached to the
request.
Make-up quizzes and exams for excused absences will have to
be completed before the following session when the quiz/exam
key becomes public.
Technical problems. If you experience technical problems
with your EECS account or the EECS servers or the lab
equipment, please submit a support request help at:
https://tsc.ku.edu/request-support-engineering-tsc.
Inside classroom policy.
Students are expected to come to the class on time, be
attentive and engaged, conduct themselves professionally, and
avoid anything that could cause a distraction or detrimental
either for other students learning or for the instructor's
presentations. Profanity and swearing is not allowed.
Students are expected to actively participate in all classroom
presentations and discussions, ask questions, and regularly
make contributions such as offering comments, responding with
good answers, and providing feedback.
Canvas announcements.
Announcements is a Canvas tool to post important
information and updates to all members of a course. It is your
responsibility to regularly check your Canvas account for such
announcements (students may also receive an email notification
when a new announcement is posted).
Email communications
E-mail communication is fast, flexible, and effective. You have an
@ku.edu email account and you are expected to regularly check
it. Important information will also be communicated via email.
You are a student registered in a course offered by
the School of Engineering at the University of Kansas, a top regional
and a nationally ranked institution. Your communications, especially
written communications (composition, grammar, spelling, punctuation,
etc), must reflect that status.
Please follow these email guidelines and etiquettes.
Send text-only emails in text-only format. All classroom
assignments, labs, or projects should be typeset and submitted
on Canvas.
Other documents (e.g., documents for an excusable
absence) shoud be emailed in PDF or a well-known image format (e.g.,
JPG or PNG). See the Guidelines for submitting electronic documents.
Grade and absence clarification or correction.
If you believe your grades on an assignment, lab, quiz, or
exam are incorrect, you should formally submit a grade appeal
via email to the instructor within one week of receiving the
graded work. Similarly, if you have an excusable absence, and
you did not provide documentation prior to the absence, submit
relevant documentation within one week of the absence. Failure
to address concerns within these timeframes will result in
the decision becoming final. This timeline ensures timely
resolution and fairness for all parties involved.
Late exam-taking policy. If a
student will have to take an exam or a quiz at a later time
(due to an excused and verified absence), he or she
will be asked to make the following statement:
I understand that I have been granted the opportunity to take
this exam or quiz on [date of rescheduled exam] due to an excused
absence from the original exam on [date of original exam]. In
making this arrangement, I affirm that I did not and will
not, by any means (in writing, speaking, or through digital
communications), obtain any information about the exam content
or details from anyone who has taken it at the original time. I
understand that violating this pledge may result in disciplinary
action, including receiving a failing grade on the exam.
Cell phone policy. Cell phones
should be turned off before coming to the classroom.
Cell phone use for the purposes of texting, email
or other social media should be avoided. Earphones
for music are OK during lab work or individualized
problem solving, as long as the volume allows you to
hear announcements. Also cell phone or other cameras
may be used to photograph projects and the whiteboard
but avoid shots that include the presenter or other students. Laptop/electronic device policy. The use of laptops,
tablets or similar devices is common for taking notes
but turn off audio and avoid any possible uses
that could cause distraction for others
(e.g., Web surfing or social media visits).
Incomplete grade policy. "Incomplete
(I) grades are used to note, temporarily, that students
have been unable to complete a portion of the required
course work during that semester due to circumstances
beyond their control. Incomplete work must be completed
and assigned an A-F or S/U grade within the time
period prescribed by the course instructor. After
one calendar year from the original grade due date,
an Incomplete (I) grade will automatically convert
to a grade of F or U, or the lapsed grade assigned by
the course instructor." Accommodations for students with disabilities.
The University of Kansas is committed to providing
equal opportunity for participation in all programs,
services and activities. Requests for special
accommodations may be made thru the
KU Student Access Services.
KU's diversity policy statement. As a
premier international research university, the University of
Kansas is committed to an open, diverse and inclusive learning
and working environment that nurtures the growth and development
of all. KU holds steadfast in the belief that an array of
values, interests, experiences, and intellectual and cultural
viewpoints enrich learning and our workplace. The promotion
of and support for a diverse and inclusive community of mutual
respect require the engagement of the entire university.
The University of Kansas prohibits discrimination on the
basis of race, color, ethnicity, religion, sex, national
origin, age, ancestry, disability, status as a veteran,
sexual orientation, marital status, parental status, gender
identity, gender expression, and genetic information in the
University's programs and activities. Retaliation is also
prohibited by University policy. If you have questions about
filing a report of discrimination, contact the Office of Civil
Rights and Title IX at civilrights@ku.edu.
KU's sexual harassment policy.
The University of Kansas prohibits sexual harassment and is
committed to preventing, correcting, and disciplining incidents
of unlawful harassment, including sexual harassment and sexual
assault. Sexual harassment, sexual violence, and a hostile
environment because of sex are forms of sex discrimination and
should be reported. (“Sexual Harassment” means behavior,
including physical contact, advances, and comments in person,
through an intermediary, and/or via phone, text message, email,
social media, or other electronic medium, that is unwelcome;
based on sex or gender stereotypes; and is so severe, pervasive
and objectively offensive that it has the purpose or effect
of substantially interfering with a person’s academic
performance, employment or equal opportunity to participate
in or benefit from University programs or activities or by
creating an intimidating, hostile or offensive working or
educational environment.)
Under Title IX of the Education Amendments of 1972, harassment
based on sex, including sexual assault, stalking, domestic
and dating violence, and harassment or discrimination based
on the individual’s sexual orientation, gender identity,
gender expression, and pregnancy or related conditions, is
prohibited. If a student would like to file a complaint for
Title IX discrimination or has any questions, please contact
KU’s Title IX Coordinator (Lauren Jones McKown, Associate
Vice Chancellor for Civil Rights and Title IX, Dole Human
Development Center, 1000 Sunnyside Ave, Suite 1082, Lawrence,
KS 66045, civilrights@ku.edu, 785.864.6414).
Mandatory reporter statement.
The University of Kansas has decided that all employees, with
few exceptions, are responsible employees or mandatory reporters
who must report incidents of discrimination, harassment, and
sexual violence that they learn of in their employment at KU
to the Office of Civil Rights and Title IX. This includes
faculty members. As such, if you share information about
discrimination, harassment, or sexual violence with me, I
will have to relay that information to the Office of Civil
Rights and Title IX. I truly value your trust in me to share
that information and I want to be upfront about my requirement
as a mandatory reporter. If you are interested in contacting
KU’s confidential resources (those who do not have to make
disclosures to OCRTIX), there are: the Care Coordinator,
Melissa Foree; CAPS therapists; Watkins Health Care Providers;
and the Ombuds Office.
Commercial note-taking ventures.
Pursuant to the University of Kansas’ Policy
on Commercial Note-Taking Ventures, commercial
note-taking is not permitted in this course. Lecture
notes and course materials may be taken for personal
use, for the purpose of mastering the course material,
and may not be sold to any person or entity in any
form. Any student engaged in or contributing to the
commercial exchange of notes or course materials
will be subject to discipline, including academic
misconduct charges, in accordance with University
policy. Please note: note-taking provided by a
student volunteer for a student with a disability,
as a reasonable accommodation under the ADA, is not
the same as commercial note-taking and is not covered
under this policy.
In fact, we often have students needing help with note taking (including
this very course). If you are able to take well-organized and detailed
notes, have legible handwriting, and regularly attend the class, your
help will be greatly appreciated and will be recognized with a a KU
certificate. Please visit with me.
Concealed handguns.
Individuals who choose to carry concealed handguns are solely responsible to do
so in a safe and secure manner in strict conformity with state and federal laws
and KU weapons policy. Safety measures outlined in the KU weapons policy
specify that a concealed handgun:
Suggested readings
Textbooks are excellent survey and tutorial resources. Most
up-to-date topics on topics discussed in class can be found in
technical journals and recent conference proceedings. Students
should develop a habit of regularly browsing
IEEE Software,
IEEE Computer,
Communications of the ACM,
IEEE Security & Privacy,
IEEE Network,
IEEE IT Professional,
IEEE Cloud Computing,
and similar magazines.
Common policies
You may use ChatGPT and other generative AI tools
in some instances. That includes generating ideas, outlining
steps in a project, finding sources, getting feedback on your
writing, and overcoming obstacles on papers and projects. Using
those tools to generate all or most of an assignment, though,
will be considered academic misconduct. If you are ever in
doubt, ask. In your course work, you will be asked to explain
in a reflection statement how you used any generative AI tools.
How to use generative AI ethically.
Using ChatGPT and similar tools to avoid the intellectual work
of your classes is wrong. If you simply copy what a chatbot
creates and turn that in as your own, it will be considered
academic misconduct. It is the same as copying and pasting
from a webpage or having a friend write a paper for you. All of
the assignments in this class are intended to help you develop
intellectually and professionally. Learning can be challenging,
and working through those challenges – and failures – will
help you be more successful in this course, in other courses,
and in your profession.
Instructors and students everywhere are trying to negotiate
the boundaries of generative AI in learning. Many areas
are murky. Here’s how I see things: The work you submit
in this class has your name on it and should represent your
intellectual efforts. Using generative AI for assistance is
much like working with a partner. You exchange ideas and offer
feedback to each other, with a goal of improving each other’s
work. If you ask your partner to do the assignment for you
because you are tired or sick, you deserve no credit because
the assignment with your name on it is a lie. The same holds
if you have generative AI do the work. So always ask yourself:
What intellectual work have I done? Is this really my work?
Create reflection statements.
Each GAI-assisted assignment you turn must include a
reflection on how you went about the work. That includes the
steps you took to find information, the way you organized
your information, and the steps you took in creating the
assignment. If you used generative AI, explain which tool
you used, how you used it, and to what extent. Also explain
what you learned from the process. Were AI tools helpful? If
so, what approaches do you want to use next time and what
approaches should you avoid? Did the use of generative AI make
the assignment feel less like your own work? Or were you able to
edit and use other strategies to shape the work into your own?
The University of Kansas, the School of Engineering, and
in particular, the Department of Electrical Engineering &
Computer Science (EECS) have zero tolerance for academic
dishonesty and academic misconduct.
The institutional definitions and consequences of institutional
academic integrity policies will used. Academic dishonesty
includes any form of plagiarism (cheating) as well as "giving
or receiving of unauthorized aid on examinations or in the
preparation of assignments or reports, knowingly misrepresenting
the source of any academic work, falsification of research
results, and plagiarizing of another's work." An absolutely
minimum consequence of an academic integrity violation will be
a zero for the item in question (e.g., a lab, an assignment,
an exam or quiz), but the consequence may also be an F for
the course, and the case may be forwarded to the SoE committee
for additional penalties and disciplinary measures.
LMS features.To further facilitate academic
integrity, the following features of Canvas
learning management system (LMS) will be utilized:
We will review these during the first class session, but you
are strongly encouraged to review these codes in detail:
From the ACM's preamble: Computing professionals' actions
change the world. To act responsibly, they should reflect upon
the wider impacts of their work, consistently supporting the
public good. The ACM Code of Ethics and Professional Conduct
("the Code") expresses the conscience of the profession.
From the IEEE's preamble: We, the members of the IEEE, in
recognition of the importance of our technologies in affecting
the quality of life throughout the world, and in accepting
a personal obligation to our profession, its members and the
communities we serve, do hereby commit ourselves to the highest
ethical and professional conduct and agree.
The School of Engineering Statement on EdTech.
"With the switch to online teaching as a result of the
Coronavirus pandemic, professors and instructors at the
KU School of Engineering are aware that some students are
actively posting assignments, laboratory, and exam questions
and responses to EdTech services (e.g., Chegg) even during
exam time frames.
Keep in mind that when a person signs up to participate by
either uploading, and/or downloading, and/or using posted
material from these sites, the “terms of service” that are
agreed to do not protect the person when KU and/or the School
of Engineering decide to conduct investigations related to
academic misconduct (e.g., plagiarism and/or cheating).
In fact, EdTech services, like Chegg, retain contact information
of students who use their services and will release that
information, which is traceable, upon request. Using these
services constitutes academic misconduct, which is not tolerated
in the School of Engineering. It violates Article 3r, Section
6 of its Rules & Regulations, and may lead to grades of F
in compromised course(s), transcript citations of academic
misconduct, and expulsion from the University of Kansas.
If unsure about assignments, it is important that students use
the allowable available resources, such as instructor office
hours, graduate teaching assistants, and/or tutoring. The School
of Engineering wants students to be successful; cheating is
not the way to attain that success."
LLM and generative AI tools
Academic integrity
The ACM's and IEEE's code of ethics. As IT and computing
professionals and/or as engineers, you should be familiar with
the ACM's (IT, computing) and IEEE (engineering) codes of
ethics and apply them during your academic and professional
careers. These are lifelong commitments to integrity and
professional conduct.
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