Advanced Software Engineering
CMPS 4350 - Spring 2021

Gordon Griesel
Office: Sci III 337 (currently virtual)
Office Hours: see my schedule, or make an appointment
Email: gordon@cs.csub.edu

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

Course meets:
MWF   10:00am - 10:50am  on Zoom (lecture 31049) 
Tues  10:00am - 12:30pm  on Zoom (lab     31050) 


Course Description:
Continuation of the introductory software engineering course. Methods and tools for the implementation, integration, testing and maintenance of large, complex software systems. Program development and test environments. Group laboratory project. Technical presentation methods and practice. Ethical and social issues in software engineering. Prerequisite: CMPS 3350.



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.

 . github
 . coding style
 . debugging
 . optimization through profiling
 . refactoring
 . multi-threading
 . memory management
 . data compression
 . prep for coding interview
 . programming competition
 . reading assignments

semester projects
-----------------
There will be four projects

1. algorithms and optimization
2. communication
3. mobile development
4. student choice

Work will be presented every four weeks.

Textbooks:

This book is required for the course.
It is available online through Safari.
Purchase of this book is recommended.
   . Essentials of Software Engineering, 4th Edition
   . Print ISBN-13: 978-1-284-10600-8
   . Web ISBN-13: 978-1-284-10607-7

Purchase of this book is optional.
   . Cracking the Coding Interview
   . ISBN-13: 978-0984782857
   . ISBN-10: 0984782869

Purchase of this book is optional.
   . The Pragmatic Programmer: From Journeyman to Master 1st Edition
   . ISBN-13: 978-0201616224
   . ISBN-10: 020161622X


Grading Policy:

Weekly assignments   45%
  . labs
  . homework
  . quizzes
  . attendance
Exams                15%
Project              40%
------------------------
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   50%
-----------------------------------------------------------------------------


Zoom class sessions
Class sessions will be held online using Zoom.
Class attendance could sometimes require student use of a webcam.

The following statement is justification for requiring the use of a webcam
by students, and was provided by CSUB administration.

--------
Because nonverbal feedback is helpful in human interactions, I expect
students in this class to keep their cameras on during synchronous portions
of online instruction. With this in mind, please plan where you will be
during class time so you can participate in a setting that is free from
visual distractions. If you believe you have a legitimate reason not to have
your camera turned on, please consult with me well in advance of the class
period, and I will make a determination.
--------

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 on Odin.

Attendance
Class attendance is required.

Attendance will sometimes be recorded using Zoom session log files.
Log into Zoom a few minutes before our class time so that you are in class
when the class period begins. You may be asked to respond to questions or
perform a task during class.

Labs
Labs are hands-on assignments to be done during a lab 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 lab period,
      when it is collected for scoring.
      A program that does not compile could receive a score of zero.

Homework
Homework assignments are 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 name on the top line
   . 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 program code must follow the K&R coding style.
     . C program code must have consistent and correct indenting.

   Text file written assignments:
     . Your name on the top line
     . Neatly written text
     . Correct spelling and grammar

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

Your name on all assignments
Now that CSUB has become a virtual campus, some of the rules for
writing and handing-in assignments are more important. Please read
the rules below and follow them.

Your name must be at the top of every asssgnment. First and last name.
An assignment file is any file that you edit as part of an assignment.

In addition to your name, add the following information:

1. Just below your name put the date you did the work.
2. Just below that give a brief description of what this assignment is.
3. Just below that you may add special comments regarding your specific
   work on the assignment.
   Include in your special comments:
      Sources that you used to work on and complete the assignment such as
      web, textbook, lecture notes, lab, homework, tutoring center, etc.

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 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.
Copying another student's work is plagiarism.
Copying answers or source code from the Internet is also plagiarism.

Academic Integrity Policy
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 Gordon 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".


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


------------
Amendment #1
------------
Protecting your own source code
Computer science students are expected to take reasonable precautions to
safeguard their own program source code by setting file permissions on source
files and directories to 700.

This includes all source code files, not just files that are your assignments
for the current semester.

Failure to protect your source files with a permission of 700 will result in
a deduction of 10% on all assignments. Continued refusal will cause the penalty
to increase and eventually scores on all assignments will be zeros.

On Odin the command to protect a file is: chmod 700 <filename>

Protecting a directory is similar.

Contact your instructor if you need help protecting your source files.