WARNING: This pages is using the global variables.php file. All 240 course websites after Fall 2018 should use a relative path to a variables.php file in the semester's root directory instead!

Class Policies - CS 240 - Fall 2018

Class Policies

Policies - Fall 2018

Prerequisites

In CS 240 we assume that you have previously taken introductory programming courses in which you learned the basic concepts of object-oriented programming, and that you have previously taken an introductory data structures and algorithms course where you learned about linked lists, binary search trees, hashing, sorting, etc. At BYU-Provo these requirements are filled by successfully completing CS 142 and CS 235. It is recommended that you also complete CS 236 before taking CS 240. Exceptionally well-prepared students may take CS 240 before CS 236, depending on their level of programming maturity.

Course Objectives

The goal of CS 240 is to help students learn a variety of computer programming concepts and skills that are essential in developing realistic software systems. Specifically, the objectives of the course are to:

  1. Have experience in and be comfortable with programming large programs
  2. Be able to apply problem solving techniques to large programs
    • Be familiar with basic object-oriented design concepts
    • Know and understand basic coding, testing, and debugging strategies for large programs
  3. Learn the Java programming language
  4. Learn the fundamental concepts and implementation techniques of:
    • Relational databases
    • Graphical user interfaces
    • Mobile programming
    • Web APIs
  5. Demonstrate the aptitude and work ethic necessary to succeed in computer science

Class Attendance

You are accountable for all material presented in class. Class attendance is a prerequisite for receiving help from TAs on the programming projects. Class is the primary forum for conducting administrative business (changes to assignments, due dates, exam dates, etc.). You are accountable for all administrative information presented in class. If you miss class, you need to find out what announcements were made in your absence.

The class schedule provides information about the lecture topics that are planned for each day. We will try to strictly follow this schedule, but unforeseen events may require some changes.

Technology Use in Class

We have learned by sad experience that technology is a major distraction to students in class, and prevents them from listening, participating, and learning as they should. Therefore, you may not use laptops, tablets, phones, or other technology in class. Notes may be taken using good old-fashioned paper and pen(cil). If you have disability that requires use of an electronic device in class, speak with your instructor.

Textbooks

There are two textbooks for the course, both of which are required and available at the BYU Bookstore and various online retailers, such as Amazon.com.

Many lectures have associated reading assignments from the textbooks. Reading assignments should be completed before coming to class. If you don't do the reading before coming to class, you may have difficulty following the lecture. You will be held accountable for all material covered in the reading assignments, including material that is not covered in class. Please refer to the class schedule for specific information on the reading assignments.

Computers and Accounts

All programming for this class is done on the Linux operating system. The Computer Science Dept. provides computers that you may use for your programming assignments. The Linux computer labs are located on the first floor and in the basement of the Talmage Building. You will need a Computer Science Dept. computer account in order to access these machines. (This account is different than your Route-Y account.) If you do not already have a Computer Science Dept. account, go to the web page at the following link to create or enable your account.

Your CS computer account can be set up here: accounts.cs.byu.edu
Account setup instructions are here: Setting Up Your Account

Abuse of BYU computers, networks, or facilities involving either pornography or illegal activity will result in loss of all Computer Science accounts and removal from all CS classes. Please refer to the CS Dept. Lab Rules and Policies for information regarding appropriate lab, computer, and account use. If you prefer, you can watch this entertaining video to learn about our lab policies: Lab Policies Video You will be held accountable for understanding and abiding by these policies.

If you would like to access the CS Dept. computers remotely, you can find instructions for doing so here: Remote VPN Access

Programming Exam Problems

At the beginning of the course, you will do several relatively small programming projects. These programs are designed to help you gain experience with Java and the Linux programming environment, and to prepare you for the Programming Exam. In fact, they are the same programs that you will be required to implement when you take the Programming Exam. The only way to pass the Programming Exam is to implement these programs before taking the exam. Each program should be completed and passed off with a TA on or before the due date (see the class schedule for due dates).

Although these programs may be passed off after their due dates, you should consider yourself behind in the class if you are not completing the programs on time. With the pressures of your other classes, you may be tempted to get behind in CS240 with the intent to "catch up" later. Experience has shown that you are very unlikely to "catch up" if you get behind, so don't let it happen. Discipline yourself and stay on schedule. The surest way to fail CS240 is to get behind.

Programming Exam

One of the major goals of CS 240 is to ensure that all students have sufficiently strong programming skills to succeed in upper division computer science courses. One mechanism for ensuring this is the Programming Exam.

The exam is taken in one of the CS Dept. Linux labs and administered by a TA. You will be randomly assigned one of the Programming Exam problems and given three hours to implement a solution to the problem. In order to pass the exam, you must completely finish the program and pass it off to the TA within the time limit.

There is no partial credit on the Programming Exam; you either finish, or you don't. You may bring one sheet of notes to the exam, but your notes may not be project-specific (i.e., they may not contain any source code, pseudo-code, or design diagrams that are specific to the exam projects). The computer used to take the exam will be disconnected from the network, thus removing any temptation to access a previously implemented solution to the problem.

You must pass the Programming Exam in order to pass CS240. The key to passing the exam is to implement each of the programs ahead of time. Please note that if you do not implement the programs beforehand, it is highly unlikely that you will pass the exam. Because passing the Programming Exam is required to pass the class, you may take the exam multiple times until you pass it (see the class schedule for exam dates). However, your maximum score for the exam will go down each time you retake it.

Attempt Maximum Score
1 100%
2 66%
3 33%
4, 5, ... 0%

If you fail the exam twice, you should meet with your instructor to discuss your situation. You will only be allowed to take the exam a third time if you have passed off all of the exam problems with the TAs.

Exams

In addition to the Programming Exam, there will be a comprehensive, written Final Exam. The Final Exam will be given in class at the time specified in the university class schedule. (See the class schedule for exam dates and times.)

Large Projects

A major goal of CS 240 is to ensure that all students are able to design, implement, test, and debug large programs. To this end, there are two large programming projects in CS 240 (Family Map Server and Family Map Client). Both of these projects are large and require several weeks of consistent effort to complete. There are multiple deliverables for each project, the due dates for which are listed in the class schedule.

One of the deliverables for Family Map Server is the Design assignment. The grading policy for this is as follows: 100% is given for perfect or near perfect submissions that meet the requirements of the assignment. 50% is given for submissions that need a few changes made, and where clear effort is made to meet the requirements of the assignment.  Assignments given a 50% can be re-submitted with the required changes made for a grade change to 100%. 0% is given when it is clear that little or no effort was made to fulfill the requirements of the assignment by the due date.  These submissions will be treated as if nothing was submitted. The late policy will apply for any re-submission of a design graded as a 0.

Since the Family Map Client project builds on the Family Map Server project, the Family Map Server project must be fully completed before passing it off. However, it may be passed off late with a penalty. Since it comes at the end of the course, the Family Map Client project may be passed off for partial credit (see the grading rubric for details), but it may not be passed off late.

In addition to getting your code to "work", a significant part of your project grade will be based on the quality of your work. Your code and automated test cases will be graded by a TA based on how well you have followed the good coding and testing practices discussed in class. Please note that the TA will evaluate the version of the code you pass off with. Therefore, it is in your best interest to tidy up your code and test cases as you go along.

Program Pass-Offs

All programs must be passed off with a TA in the Linux labs during the regularly scheduled TA hours. We do not do timestamp-based pass offs.

Working Together

All assignments that you turn in must be your own work. You may discuss concepts, ideas, and general approaches with others (e.g. at a whiteboard), but when it comes time to create actual design documentation or source code, you must work alone. You may not share electronic files or hard-copy printouts containing designs or source code with other students, either as giver or receiver. You may not work in close synchronization with other students in a side-by-side fashion. Violations of this policy will result in all involved students failing the course and the possibility of further action at the university level.

CS 240 Flag

In order to register for CS classes beyond CS 240, the "CS 240 flag" must be set in your student record (this is enforced by the BYU class registration system).

For CS majors, you must meet with Makenna Johnson in the CS Dept. office to get your CS 240 flag set. When you meet with her, Makenna will give you some important information about the CS major. A meeting time with Makenna can be arranged by contacting her at csrelations@cs.byu.edu.

For non-CS majors, your CS 240 flag will be set automatically after the add/drop deadline. You do not need to meet with Makenna.

Grades

The grades for this class are maintained in Learning Suite. Please check your grades in Learning Suite often and notify us of any mistakes that have been made in recording your grades.

The following table shows the weight of each assignment and exam.

Image Editor 2%
Spelling Corrector 2%
Evil Hangman 2%
Programming Exam 8%
Family Map Server - Design 5%
Family Map Server - Program 20%
Family Map Server - Tests 6%
Family Map Server - Code 6%
Family Map Login 5%
Family Map Client - Program 20%
Family Map Client - Tests 6%
Family Map Client - Code 6%
Final Exam 12%

The late policies for the various assignments are listed in the following table:

Deliverable Late Policy
Image Editor, Spelling Corrector, Evil Hangman -20% per school day
Family Map Server - Design -20% per school day
Family Map Server - Program/Tests/Code -5% per school day
Family Map Login -20% per school day
Family Map Client - Program/Tests/Code Cannot be passed off late, Partial-credit available

Final grades are assigned according to the following scale. If this scale is modified, it will only be in your favor.

A 93-100
A- 90-92
B+ 87-89
B 83-86
B- 80-82
C+ 77-79
C 73-76
C- 70-72
D+ 67-69
D 63-66
D- 60-62
E Below 60

CS Dept. Retake Policy

Honor Code Standards

In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of another. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university.

Students are also expected to adhere to the Dress and Grooming Standards. Adherence demonstrates respect for yourself and others and ensures an effective learning and working environment. It is the university's expectation, and my own expectation in class, that each student will abide by all Honor Code standards. Please call the Honor Code Office at 422-2847 if you have questions about those standards.

Harassment

Harassment of any kind is inappropriate at BYU. Specifically, BYU's policy against sexual harassment extends not only to employees of the university but to students as well. If you encounter sexual harassment, gender-based discrimination, or other inappropriate behavior, please talk to your professor, contact the Equal Employment Office at 422-5895 or 367-5689, or contact the Honor Code Office at 422-2847.

Disabilities

BYU is committed to providing reasonable accommodation to qualified persons with disabilities. If you have any disability that may adversely affect your success in this course, please contact the University Accessibility Center at 422-2767. Services deemed appropriate will be coordinated with the student and instructor by that office.

Children in the Classroom

The serious study of the physical and mathematical sciences requires uninterrupted concentration and focus in the classroom. Having small children in class is often a distraction that degrades the educational experience for the entire class. Please make other arrangements for child care rather than bringing children to class with you. If there are extenuating circumstances, please talk with your instructor in advance.