Course Syllabus

Jump to Today


Miami University

Department of Computer Science & Software Engineering

CSE 278: Systems I: Introduction to Systems Programming

Sections B and C


Course Information

Instructor

James Kiper

Email: [email protected]

Office: 205C Benton Hall

Class Meeting Times:

Section B

Lecture: Monday and Wednesday at 2:50 PM - 3:45 PM

Lab: Friday 2:15 PM - 4:05 PM

Section C

Lecture: Monday and Wednesday at 2:50 PM - 3:45 PM

Lab: Thursday 2:15 PM - 4:05 PM

Office hours:

Monday from 4 to 5 and Wednesday from 10:30 to 11:30am via WebEx. If you can’t make it to my office hours, send me an email to schedule a meeting.

WebEx: https://miamioh. (https://miamioh.zoom.us/j/5470569163) webex.com/meet/kiperjd

Evening Midterm Exam Period:

Mondays 8:00 PM - 9:20 PM

Course Overview

Principles of Von Neumann computer architecture through the C/C++ programming language. Data representation and computer arithmetic. Memory hierarchy. CPU structure and instruction sets. Network programming including use of sockets. Database programming through SQL.

Prerequisites:

CSE 271 (Object-Oriented Programming)

Class Format

Due to the COVID-19 situation, we will have lectures and labs through Zoom at the scheduled course time. For labs, we will utilize breakout rooms for individual questions. Reading assigned material in advance and actively participating in all aspects of the class sessions is critical to achieving learning outcomes. Attendance is expected and attendance/participation will be part of the course grade. Additionally, pre-recorded videos, especially tutorials of tools, may also be utilized.

The lecture sessions in this course will be live-streamed and recorded. Such recordings/streaming will only be available to students registered for this class. The faculty member will provide you notice if any of these recordings/streaming will be shared with anyone outside of this course, and will obtain your prior written consent before sharing. These recordings are the intellectual property of the faculty member and Miami University and may not be shared or reproduced without the explicit, written consent of the faculty member and Miami University. Further, students may not share these sessions with those not in the class, or upload them to any other online environment. Doing so would be a breach of the Code of Student Conduct.

Student Learning Objectives

By the end of this course, you should be able to:

1. Develop programs using a high level, systems programming language (currently C++) in a Linux environment.

2. Critique properties and characteristics of various computer architecture choices including the major components and their functions.

3. Analyze the salient aspects of machine instructions and memory addressing modes.

4. Convert a high level language program to machine language, generate assembly code from high level programs using suitable tools.

5. Convert unsigned integers between the following representations: decimal, binary, and hexadecimal.

6. Demonstrate the use of compiler optimizations to improve performance (e.g., by address issues in a pipeline, etc.).

7. Use basic networking and socket programming concepts to develop a textual client-server program using sockets.

8. Develop SQL statements to manipulate a simple database including the use of APIs (e.g., ODBC) to access a database from a program.

9. Use appropriate systems tools including those from a command line interface

List of Main Topics

Here is a brief overview of the main topics to be covered in this course. A more detailed description of the course content is available off the CSE website (https://www.miamioh.edu/cec/academics/departments/cse/academics/course-descriptions/cse-278/index.html) .

Introduction to Linux shell

Introduction to programming in C++

Exploring core libraries in C++

Pointers and Dynamic memory management in C++

CPU components: ALU, Registers, Caches

Introduction to socket programming

Introduction to relational databases

Basic of computer security and vulnerabilities

Important Dates

  Wednesday, January 27
  Last day to Add/Drop through BannerWeb
  Friday, January 29
  Last day for Departments to add students to a course
  Thursday, February 11
  Last day to drop without a grade
  Monday, March 15 @ 8:00 PM (eastern)
  Midterm Exam
  Thursday, April 1
  Last day to drop with grade of W assigned
  Wednesday, May 12: 3:00 - 5:00 PM EDT
  Final Exam

COURSE MATERIALS

Required Textbooks

These textbooks are available at no cost via Miami's subscription to Safari E-books

C++ How to Program" (Tenth edition) by Paul Deitel and Harvey Deitel (https://learning.oreilly.com/library/view/c-how-to/9780134448930/?ar)

Computer and Communication Networks (Second edition) by Nader F. Mir (https://learning.oreilly.com/library/view/computer-and-communication/0131747991/?ar)

MySQL (Fifth edition) by Paul DuBois (https://learning.oreilly.com/library/view/mysql-fifth- edition/9780133038552/?ar)

Optional/Suggested Textbooks

These two optional textbooks are available at no cost via Miami's subscription to Safari E-books

Beginning Linux Programming (Fourth edition) by Neil Matthew and Richard Stones (https://learning.oreilly.com/library/view/beginning-linux-programming/9780470147627/?ar)

Computer Networks (Fifth edition) by Andrew S. Tanenbaum and David J. Wetherall (https://learning.oreilly.com/library/view/computer-networks-fifth/9780133485936/?ar)

This optional textbook is not available from Miami's subscription to Safari E-books

“A First Course in Database Systems” (Third edition), by Jeffrey Ullman and Jennifer Widom. Pearson Prentice Hall. 2007. (ISBN 13: 978-0-13-600637-4)

Additional References

You may find the following additional references useful:

Online C++ API documentation (https://en.cppreference.com/w/) from cppreference.com

The GNU GCC (9.3.0) Manual, Copyright © Free Software Foundation, Inc.

Online access via: GNU GCC Website (https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/)

CSE Programming Style Guide (https://miamioh.edu/cec/academics/departments/cse/academics/programming-style/index.html)

Link to the style checking tool cpplint.py (http://cec.miamioh.edu/files/cpplint.py) .

Other reference material may be made available via Canvas

Policies for Homework

Most of the homework will require designing and implementing programs. In addition, several homework will require additional reading, writing short answers, or essays. The following policies will be strictly followed for all homework:

General Policies:

Cannot be turned in late.

Starting early is critical for successfully completing the homework.

Work alone. You may help one another, but without sharing any code (see Academic Integrity Policy).

Use the Canvas online discussion forums for a homework to seek general clarifications or help to troubleshoot a specific compiler error.

All programs must adhere to good programming practices, style (see CSE Programming Style Guidelines (https://miamioh.edu/cec/academics/departments/cse/academics/programming-style/index.html) ), and use good documentation suitable for a particular language.

Coding standards: All programs must adhere to good programming practices, particularly:

Coding practices (see CSE Programming Style Guidelines (https://miamioh.edu/cec/academics/departments/cse/academics/programming-style/index.html) ) will be enforced in the course using automatic scripts.

Use good documentation suitable for a particular language.

Must contain a design that is clear and concise.

Late submission: Delayed submissions of homework assignment will not be accepted, unless:

You have documented medical reasons clearly explaining the reason for missing deadlines. In the case of medical issues, you must meet with me in-person, preferably with a doctor’s note, and discuss the situation.

You have documented evidence indicating death or funeral in your family.

Exception: Slip Days. Each student has 1 slip day that can be used to extend a homework deadline by 24-hrs. To use the slip day, you must send an email before the deadline that you are using the slip day and note on the assignment when submitting that you are using a slip day. It will not able to be applied retroactively.

Grading rubric: The following grading rubric will be adopted for all programming assignments in addition to any other rubrics specified with each assignment:

Failure to comply with turn-in procedures or file naming conventions may result in an assigned grade of zero.

Programs that do not even compile or link will be assigned zero score.

Programs and scripts that do not operate correctly for stipulated base-case inputs (if any) will be assigned a zero grade.

Outside Help: Discussion of course related material is encouraged. However, sharing of assignments and/or answers is strictly prohibited. Students are expected to use good judgment with regard to receiving outside help. Programs that are essentially identical are considered to be the work of another, and will be treated as academic dishonesty. Please refer to the Miami Student Handbook for a detailed description of student expectations.

Checkpoint submissions: Intermediate submission of homework solutions may be expected (all homework may not have this requirement). Due dates for checkpoint submissions will be indicated along with each homework assignment.

Checkpoints must include cumulative journal entries. That is you must preserve earlier entries in the journal and add new ones for each checkpoint. Journal entries must describe the progress made along with any problems you faced or overcame.

Source code in checkpoints must compile but need not be complete or defect free.

For every checkpoint submission deadline missed, you will loose 25% of the grade for the homework assignment.

This policy will be rigorously pursued in this class.

Homework help via email: I will provide help and direction for programming projects via email. However, response to emails received after business hours (8-5), during holidays, and weekends may be sporadic. I will reply using FIFO (first in first out) so it is recommended to START ASSIGNMENTS EARLY.

Exams

General Policies: one midterm exam and a final exam will be administered for this course. The only acceptable excuse for missing the scheduled exam and to request makeup exam is that it conflicts with another course. I will excuse only those for whom there is no other alternative. Begin to arrange your schedule now (work, meetings, interviews, etc.). If you require a makeup exam, you must obtain written (via email) permission from me prior to the test. Unexcused, missed exams will be recorded with zero points.

Makeup Exams: Makeup exams will be permitted only under the following extraordinary circumstances:

An unexpected, documented medical emergency arises

Provable extenuating circumstances.

Note, that makeup exams are not guaranteed and require a legitimate, documented reason. In all cases, students are responsible for informing the instructor no later than 24 hours prior to a scheduled exam.

Final Exam Policy: The University policy for the final exam is that no exam may be administered early except with written permission from the Associate Dean of the division. This permission is typically not given except under extraordinary circumstances.

Make-up final exam: Make-up for final exam will be administered under the following circumstances:

If you have conflicts with this time due to another final exam.

If you have more than 2 final exams on the same day as this course.

GRADING INFORMATION

This class includes a variety of exercise designed to facilitate your understanding of system programming, networking, and relational databases. The course includes several homework assignments some of which will be programming assignments. The grade distribution for the various categories is shown in the table below:

Category
Percentage of Grade
  Attendance/Participation
10%
  Quizzes
10%
  Labs
10%
  Homeworks
25%
  Midterm
20%
  Final
25%

Letter Grade Definition

Your final letter-grade in this course will be determined as shown in the table below:

Final Grade
Percentage Range
A+
97 to 100%
A
93 to < 97%
A-
90 to < 93%
B+
87 to < 90%
B
83 to < 87%
B-
80 to < 83%
C+
77 to < 80%
C
73 to < 77%
C-
70 to < 73%
D+
67 to < 70%
D
63 to < 67%
D-
60 to < 63%
F
< 60%

ACADEMIC INTEGRITY

The Department of Computer Science and Software Engineering is committed to maintaining strict standards of academic integrity. The department expects each student to understand and comply with the University’s Policyon Academic Integrity (http://www.miamioh.edu/integrity/) : and (http://www.miamioh.edu/integrity/) Student Handbook (Undergraduate (https://miamioh.edu/policy-library/students/undergraduate/index.html) , Graduate (https://miamioh.edu/policy-library/students/graduate/index.html) student policies).

Students may direct questions regarding academic integrity expectations to their instructor or to the department chair. All work submitted must be original for that class. Submitting the same project for two different classes is grounds for charging a student with academic misconduct unless prior written permission is received from both instructors.

“Problem Solving Assignments” are assignments that involve programming, math, proofs, derivations, and puzzles. The purpose of a problem solving assignment is for you to develop the skills necessary to solve similar problems in the future. To learn to solve problems you must solve the problems and write your solutions independently.

It is worth reiterating that the important aspect of the assignment is that you actually create the solution from start to finish; simply copying a solution and then attempting to understand it after the fact is not a substitute for actually developing the solution.

The notion of academic integrity can be confusing in courses with substantial problem solving because certain forms of collaboration and investigation are permitted, but you are still required to complete your assignment independently. The following scenarios are meant to help distinguish between acceptable and unacceptable levels of collaboration and research, but are not all-inclusive:

ACCEPTABLE:

Consulting solutions from the current course textbook, but not from other published sources.

Seeking help on how to use the programming environment such as the editor, the compiler, or other tools.

Seeking help on how to fix a program syntax error or how a certain language feature works.

Discussing strategies with a fellow student on how to approach a particular problem. This discussion should not include significant sections of completed work or source code (including printouts, email, viewing on a monitor). Discussions should begin with a clean sheet of paper and end with conceptual drawings and/or high-level procedures.

UNACCEPTABLE:

Looking at another solution including those written by current students, past students, or outside sources such as code or solutions found on the Web, or in publications other than the current class textbook.

Using another solution as a starting point and then modifying the code or text as your own work.

Providing a copy of your solution or a portion of your solution, in any form (electronic, hard copy, allowing another student to view your code on a monitor), to another student, except for team assignments.

Giving or receiving code fragments to fix a problem in a program.

If you are stuck on a problem and you are tempted to search for a solution on the Web or to look at another student’s solution STOP and email or ask your instructor for help.

ADA & STUDENTS WITH DISABILITIES

Miami University is committed to ensuring equal access to students with disabilities. Miami's Office of Student Disability Services (SDS) assists students with determining eligibility for services and accommodation planning.

Students who are entitled to disability-related academic adjustments, auxiliary aids, etc., must register with SDS (https://miamioh.edu/student-life/sds/student-tools/how-to-register/index.html) to receive accommodations in university courses. Please understand that formal communication from SDS must be presented prior to the coordination of accommodations for this course. For more information, students may contact SDS at (513) 529- 1541 or via email at [email protected] (mailto:[email protected]) .

To view the accessibility statement from Canvas follow this link (https://training.instructure.com/courses/347469/pages/accessibility-statement%20) .

COVID-19 Considerations

Attendance

No student, faculty, staff member who is ill or has been in close contact with an individual who has tested positive for COVID-19 should attend class or come to campus. The instructors of this course will, without prejudice, provide students with reasonable opportunities for completing missed work. However, students are ultimately responsible for material covered in class, regardless of whether the student is absent or present. If your absence is of significant duration or severity, as your instructor, I will advise you about other options that might be available including assigning an incomplete grade or requesting a medical withdrawal.

Course Policies

Student Responsibilities

According to the Miami University Student Handbook, student responsibilities include:

Attending class in accordance with University regulations;

Being attentive during class, and participating constructively in class discussions;

Doing the work assigned in each course to the best of his or her ability, and submitting it on time;

Showing respect for instructors and fellow students at all times;

Abiding by University regulations prohibiting academic misconduct (see Chapter 5 of Part 1 Undergraduate Academic Regulations);

Endeavoring to ensure that the learning environment is free from all forms of prejudice that negatively influence student learning, such as those based on age, ethnicity, gender, mental or physical impairment, race, religion, sexual orientation, or gender identity.

During class students must avoid disruptive behavior which can result in student being removed from class. Disruptive behavior is defined as any behaviors that hamper the ability of instructor to teach or students to learn. Common examples of disruptive behaviors include, but are not limited to:

Talking when the instructor or others are speaking

Overt inattentiveness (e.g., sleeping or reading the paper in class)

Creating excessive noise

Entering the class late or leaving early

Interrupting instructor during lecture with irrelevant comments

Use of cell phones in the classroom

Use of computing equipment for any purpose other than those pertaining to classroom activities

Interacting with TAs & graders:

Your course may include TAs or graders who will work with your instructor to provide you with the best educational experience and all the support possible to help you succeed in the course. However, it is imperative to remember the following important protocols when interacting with TAs:

The TAs maybe your friends outside the class settings. However, in all aspects directly or indirectly related to the course they to be treated as if they were your instructor.

It is important to remember that the TAs/graders are employees of Miami University. Therefore, they have legal protection (and obligations that go with it) from the University and they can seek legal recourse for any forms of discrimination or untoward conduct.

The role of the TAs/graders is to help you learn. They are clearly instructed not to provide solutions. Consequently, asking the TA ”Can you give me the answer to this question?” violates ethical conduct expected from you. Instead, the question should be ”Can you help me find resources to learn and answer this question?”

The TAs/graders do not have any role in policy matters, due dates, deadlines, grade disputes etc. If a question does not solicit help, you should not be sending them to a TA/grader. For example, emailing delayed submission to a TA violates ethical conduct expected from you. Similarly, you should never ever contact a TA/grader with questions regarding your score/grade. Instead, you should contact your instructor.

Attendance/participation

Attendance in this course is required during the remote class sessions. Three or more unexcused absences will result in a zero for the attendance/participation portion of the grade. Participation in this course may be monitored via the Canvas courseware site (e.g., based on timely progress through Canvas course modules and timely submissions of assignments). Students who are not completing course modules and submitting assignments will be contacted by the instructor. Should a student become ill, it is the responsibility of the student to contact the instructor and keep the instructor appraised of the situation.

Policies for Lab Exercise and Quizzes

The course will consist of a combination of lectures and laboratory style experiments. Lab assignments should take no more than 110 minutes to complete. Labs will be due at 5:00 PM on the day of the lab (excluding Lab0) unless otherwise noted. They are not intended to be homework. In addition, short quizzes or other exercise will be performed in addition to the lectures. There is no makeup for lab exercises and quizzes. If you miss one you get a zero for it. All quizzes are to be individual work. No external reference materials or discussions will be permitted.

Official Communication

All the official communication in this class will be performed electronically in the following 2 primary forms:

Canvas will be the primary mechanism for announcements, schedule changes, and other information that pertains to the whole class

Through your MU email address only (to ensure compliance with FERPA guidelines). It is your responsibility to check your MU email often, everyday.

E-mail is the best way to get in touch with me as I will often be out of my office. I always respond to emails and will try do so promptly.

A Final Note

It is my goal and Miami’s to see you succeed academically. If you feel like you could use some help, in this course or others or more generally, please don’t hesitate to reach out to me. And here are some Miami resources you can take advantage of:

Student Counseling Services (http://miamioh.edu/student-life/student-counseling-service/index.html)

Student Health Service (http://miamioh.edu/student-life/student-health-service/index.html)

Rinella Learning Center (http://miamioh.edu/student-life/rinella-learning-center/index.html) , including tutoring services

Howe Center for Writing Excellence (http://miamioh.edu/hcwe/)

English Language Learner Writing Center (http://miamioh.edu/ellwc/)

See the Personal Support web page (http://miamioh.edu/student-life/student-affairs/care-and-concern/personal- support/index.html) from the Division of Student Life for links to additional resources.