CMPS-3350 Software Engineering Spring 2023

Gordon Griesel
Office: Science-III 337
Office Hours: see my schedule, or make an appointment
Email: gordon@cs.csub.edu

Course web site: https://www.cs.csub.edu/~gordon/3350/

MWF 9:00am - 9:50am (lecture 81685)
Tues 7:20am - 9:50am (lab 81686)
Course Description

This course introduces the fundamentals of Software Engineering.

From the catalog:
This course is a general introduction to Software Engineering. The course will cover the specification, development, management, and evolution of complex software systems. Students will learn how to cost-effectively apply the methods and theory from Computer Science to solve difficult problems. The course presents a broad perspective on software and system engineering and surveys a wide spectrum of tools and techniques. Students are required to complete a project as part of a small software engineering team. Students will form groups and choose a software project early in the course, then apply methodologies learned in the course to complete their project. Each day lecture meets for 50 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better.

Lecture Topics and Rough Schedule

The topics below are the general subjects of the course, and will be introduced and discussed sequentially as the course progresses.

Subjects could be added or removed.
  . Linux and Vim editor use
  . Source and Version Control
  . Git and Github
  . The Software Engineering Lifecycle
  . Waterfall, Incremental, etc.
  . Agile Methodology
  . Open Source
  . Requirements Engineering
  . SRS - Software Requirements Specification
  . Design - Architecture and Methodologies
  . MVC - Model, View, Controller
  . Coupling and Cohesion
  . Software Design Specification
  . Programming a Complex Algorithm
  . Implementation Phase of Development
  . Program Debugging
  . Program Optimization
  . Testing and Quality Assurance
  . Testing Techniques
  . Specific Programming Techniques
  . Mobile development
  . Android
  . Android APK Creation
  . Profession and Ethics
  . Job Interview Day
  . Group Project Presentations
  . Project Completion
Textbooks:

These books might be found at the CSUB Library.
Sections of the following books will be used:

Essentials of Software Engineering, 4th Edition
By: Tsui
Publisher: Jones & Bartlett Learning
Pub. Date: December 5, 2016
Print ISBN-13: 978-1-284-10600-8
Web ISBN-13: 978-1-284-10607-7
Pages in Print Edition: 334
Android Studio 2 Essentials - Second Edition
By: Belaon Cruz Zapata
Publisher: Packt Publishing
Pub. Date: June 28, 2016
Print ISBN-13: 978-1-78646-795-9
Web ISBN-13: 978-1-78646-021-9
Pages in Print Edition: 172
All books above are current and up-to-date. link
Additional book not provided free:
The Mythical Man-Month
Frederick P. Brooks, Jr.
ISBN: 0-201-83595-9
Addison-Wesley
Grading Policy
Weekly assignments   55%
  . labs
  . homework
  . quizzes
  . attendance
Exams                20%
Projects             25%
------------------------
Total               100%

Grading scale used during the semester...
    A   93%
    A-  90%
    B+  87%
    B   83%
    B-  80%
    C+  77%
    C   73%
    C-  70%
    D+  67%
    D   63%
    D-  60%
    F    0%
Other course details...

Classroom class sessions
Class sessions will be in Science-III room 240.
When class starts each day, you should be logged in to the Odin server.
Many class sessions will include some programming or a task to complete using
a text file or program on Odin.


Attendance
Class attendance is required.
Please be in your seat and ready when the period begins.

Attendance marks:
   Late arrival to class - 1 mark
   Unexcused absence     - 1 mark

Each attendance mark will deduct 0.5% from your overall grade.


Labs
Lab attendance is required.
Labs are hands-on assignments to be done during the class period.
Lab rules:
   1. Must not be late to lab.
   2. Must work the entire lab period, unless excused by instructor.
   3. Your program must compile and run at the end of a lab period.
      A program that does not compile could receive a score of zero.

Lab assignments are designed to run on the classroom computers.
Use of a personal laptop requires the following...
   1. Ability to enlarge your screen text for better viewing.
   2. Installation of any utilities needed.

More lab rules:
   1. If you are late to lab, do not copy from another student.
   2. If you need help, be ready to enlarge your screen text
      for viewing by your instructor.

Homework
Homework assignments will be posted on our web page.
Instructions will be given for each assignment.
Homework Rules:
   1. Your program must compile and run when it is due.
   2. The homework source code files will be collected by the instructor.


General requirements of all assignments
Your assignments will usually be files stored on the Odin server.
Your files must be stored inside your 3350/ directory, and in the
proper subdirectory.

Your 3350/ directory must be created using a script provided. The 3350/
directory is created so that your work is visible only to you and your
instructor. Do not change the permission of the directory after running
the provided script.

   Other general requirements:
	 . Your name on the top line of a program or text file
     . Correct file name
     . Correct file location

   Programming assignments:
     . No compile warnings or errors
     . Program must run
     . Program output must be neat, clean, and complete.
     . C/C++ program code must follow the K&R coding style.
     . C/C++ program code must have consistent and correct indenting.

   Text file written assignments:
     . Neatly written text
     . Correct spelling and grammar

   Each assignment will also have some specific requirements in addition to
   those listed above.

   Some assignments may be given verbally.
   Unannounced quizzes may be given at any time.


Exams
Some quizzes and exams are given in the classroom.
 • Do not walk through the classroom while an exam is in progress.
 • If you arrive late for an exam, do not walk through the classroom.
 • Walking through the classroom will cause a 50% penalty to your exam.
 • These rules apply to quizzes, exams, the midterm exam, the final exam.


Final Exam
A final exam will be given.
A date and time for the final exam will be posted.


Late Assignment Policy
Late assignments will not be accepted and can result in a score of zero.


Individual Work Policy
All work done in this course is individual work.
Sharing of source code is not allowed.
Possession of code written by other students is not allowed.
Asking or searching for code written by other students is not allowed.
Copying another student's work is plagiarism.
Copying answers or source code from the Internet is also plagiarism.


Group project work
There will be specific group assignments.
In a group project you may work with other students.
You are required to cooperate with other students in the class.
You will be asked to evaluate yourself and the students in your group.


Classroom Behavior
 - CSUB is a smoke-free and tobacco-free campus!
   Please do not smoke, vape, chew, or spit in the classroom.
 - Please do not wear headphones or earbuds in the classroom.
   Refer to the accommodations section if needed.
   Your instructor reserves the right to ask you to remove your headphones
   inside the classroom.
 - Please do not use your cellphone during class time.
 - Please do not walk past the instructor while a lecture is in progress.
 - Please do not curse in the classroom.
 - Use of an electronic recording device is not allowed.
 - Do not walk through the classroom while an exam is in progress.


Academic Integrity Policy
Except for the group projects, all work done in this course is individual work.
Please do not share your work with other students.
You may discuss assignments with other students, but sharing of source code
is simply not allowed. Refer to the Academic Integrity policy printed in the
campus catalog and class schedule. Violations are enforced in accordance with
the Department's policy on academic honesty.


Absence from class
A student's responsibilities include attending classes.
If you miss a class, it is your responsibility to inform your instructor of
the reason for the missed class (documentation may be required) and to arrange
to make up any missed assignments, exams, quizzes, and class work,
to the extent that this is possible.
Excusable absences include, but are not limited to:
Illness, injury, death of an immediate family member, etc.
See a complete list at CSUB Catalog. Search for "University Absence Policy".

If you receive a summons for Jury Duty, immediately call the number on the
summons to reschedule your service to a time when you are not in school,
such as holiday break or summer.

A few common absences that are usually not excused...
   Going to a wedding.
   Going on vacation with your family.
   Your car breaks down.
   You have to take your car to the repair shop.
   A doctor's appointment.
   Sleeping through your alarm.
   Your job runs into class time.
   Conflict with another class.
   Leaving early or returning late from Spring Break.
   Your foot hurts.
   Don't feel good when you wake up so you go back to sleep.
   Someone in your house is sick.
   Must take your brother/sister to school.
   Care-taker for an older family member.
   Must take care of a sick family member.
   A family member is sick, so you might be sick.
   Going to Vegas for the CSUB basketball tournament.
   Working at your family business.
   Your work schedule changed.


Telling your instructor in advance of an absence gives you the
best chance of being excused.

No Recordings Allowed:
Under California Education Code Section 51512, it is illegal for any person,
including a student, to use an electronic device to record what is happening
in the classroom without the consent of the instructor.
The instructor for this course DOES NOT give consent for recording of any kind.
If a disability requires you to record a class session, then please
contact SSD so accommodations can be made.


Your instructor reserves the right to amend this syllabus during the semester.


------------------------------------
Amendment: Use of APIs and libraries
------------------------------------
Students, for your programming, please use the frameworks provided by your
instructor. All the necessary components and tools are there. Please do not
use the following for any assignments:
  SDL
  SFML
  GLFW
  GLUT
  and others not listed here

If you are unsure if a library or sample code that you find online should be
used for an assignment, ask your instructor.
Thanks.
End of amendment