CS 222, Computer Programming for Engineers (3 Units)

George Mason University
DEPARTMENT OF COMPUTER SCIENCE
Course Description: Section 003 -- Fall 2024


Instructor: Prof. John Otten
Email address:  jotten2@gmu.edu    Office Phone: 703-993-1669
Office Location: ENGR, Room 5335; Office Hours: Mon 12:00 - 1:00 p.m., Wed 5:00-6:00 p.m., or by appointment
Class Day/Time: Mondays and Wednesdays 12:00 - 1:15 p.m.
Class Location:   Exploratory Hall, Room L003

Please note: Additional details will be posted to the course folder on Canvas.


DESCRIPTION: CS 222 is a second course in computer programming, emphasizing programming concepts relevant to engineers. Topics include lower level language aspects and elementary data structures. Students are expected to have a basic understanding of the elements of programming in some high-level language. CS 222 will be taught using C, but students are not presumed to be familiar with C prior to this class. This course is intended as a terminal course in programming for engineers.

Prerequisite: C or better in CS 112.


REQUIRED TEXTBOOK:   Hanly and Koffman, "Problem Solving and Program Design in C," 8th ed., 2016


Graduate Teaching Assistant:  TBD  Email: Posted on Canvas   Office Hours: Posted on Canvas
Undergraduate Teaching Assistant:  TBD   Email: Posted on Canvas  Office Hours: N/A


COURSE POLICIES

Class: Class lectures will be held on Mondays and Wednesdays, from 9:00 a.m. - 10:15 a.m. each day. Students are expected to attend the full lecture each week and are responsible for all material covered during lecture.

Electronic Devices:  Use of electronic devices (including laptops, tablets, cell phones, etc.) is not permitted during class except during specific class activities.  Please make sure all such devices are turned off or silenced while class is in session.

Programming Assignments: Programming assignments will be posted on Canvas as they are assigned, and must be submitted on Canvas by the assigned due date.  Rubrics will typically be provided for major assignments and should be consulted to be sure specifications are met.  If your program is incomplete, you may still submit it for partial credit. However, your code must run without obvious errors (even if not all functionality is present). Building your programs in a modular fashion and debugging as you go are crucial concepts in program development. Additionally, your TA relies on running your program as part of your grade determination.  Accordingly, any programming assignment that is submitted but either does not compile or has major errors when it is run will receive no more than 50% credit.

Students are expected to work independently outside of class to familiarize themselves with the GMU computer systems, to read and review all assigned materials and to complete all homework and programming projects.

Reading: Students are responsible for reading and understanding all assigned material. Be aware that some material covered in class may not be found in your textbook.  If you do not understand any of the covered material or reading assignments, there will be opportunities to ask questions in class, on Piazza or during UTA/GTA/instructor office hours.

Due Dates: Due dates for all programming projects will be posted on Canvas. Programming assignments are posted in advance, and are due in the manner stated in the specs (usually electronic submission through Canvas) no later than the date specified.  Homework assignments are due in the manner stated (either through Canvas or in class.)

Late work:  Late submissions are permitted for homework and programming projects, but will be penalized 10% per day (incl. weekend days/holidays). You should recognize that this can cause major penalties for incomplete programs, so start work early! If your program isn't the way you'd like it to be when the deadline is near, submit it anyway for partial credit. In fact, submit early and often! The system permits you to resubmit your assignment until the due date, so you may resubmit if you improve your program prior to the deadline. (Resubmissions after the deadline require approval of your TA, since s/he may already have graded your project. If you know that you wish to resubmit a new version after the deadline, it is your responsibility to notify your TA no later than the time of the deadline, so s/he will not grade the on-time submission.) No resubmissions may be made after a project has been graded.


Use of CoPilot and ChatGPT

With the rise and availability of tools such as CoPilot and ChatGPT, the ability for students to complete their programming assignments without doing much work on their own has increased.  This has had the effect of students depending too much on these tools and therefore not learning the material to the extent required to perform adequately in a career situation.  Therefore, the use of such tools is not prohibited, but strongly discouraged.

In order to confront this issue, the emphasis of programming assignments on the overall grade has been reduced.  Instead, in-class assessments (quizzes, tests, whatever you want to call them) will occur frequently throughout the semester, and may not be announced in advance.  These will be assessments where students will write code by hand in order to ensure that they understand the material well enough to succeed in programming after leaving GMU. 

An analogy to this would be homework assignments in a math class.  Many math classes assign homework to help students understand the concepts, but don't grade the homework or even check that it is done.  Students then take exams to evaluate how well they understand the concepts taught from doing the homework.  Students who do not do the homework assignments usually do poorly on these exams and run the risk of failing the class.

Therefore, students will be expected to complete the programming assignments (projects and homeworks), and they will receive a grade.  However, if a student merely uses ChatGPT or Copilot to write their assignment for submission, they will likely not learn the concepts that the assignment is presenting, and thus will do poorly on the in-class assessment that evaluates their knowledge of those concepts. Although students may think that ChatGPT and similar tools can help them get through the class, it is more likely that their use will be a detriment to their learning the concepts and thus contribute to a poor grade or potential failure of the course.


GRADING POLICY

Your course grade will be a weighted average of the following items:

Individual programming projects may be weighted differently from one another, at the instructor's discretion.

Instructor's evaluation may include in-class exercises.  Homework may include short programming assignments and/or traditional homework exercises.  


CLASS COMMUNICATIONS

CS 222 will be using Canvas and GMU email for most class communications. We will also be using Piazza as a forum for questions you may have about assignments or the course in general.  You are responsible for any announcements or information posted on Canvas or Piazza, either by your instructor, your GTA or the class UTA(s).  Since most Canvas announcements will also be sent to your gmu email account, please make sure your GMU email account is active and able to receive messages.  Individual communications with the professor/GTA/UTA should also use your GMU email account. When you send email, please be sure to include your name, the class number and section and the topic in the subject header. (E.g.: Subject: Jim Jones / CS 222-002 / Project 2)


OFFICE OF DISABILITY SERVICES

If you are a student with a disability, please contact the Office of Disability Services (ODS) at (703) 993-2474.  I will be happy to arrange any appropriate academic accommodations, but they must be arranged through ODS (http://ods.gmu.edu).

PROGRAMMING POLICIES

(1) No sharing or discussion of code for assignments. Unless specifically stated otherwise, all assignments are individual projects, not group projects. Students are expected to do their own work, not to share programs with each other, nor copy programs from anyone else. This means you may not discuss program design or strategize solutions with anyone except your instructor or a course UTA or GTA.  However, you may offer more limited assistance to your fellow students regarding specific questions on their programming assignments by responding to queries on Canvas or Piazza (see guidelines below).  You may also discuss general course concepts, including coding, so long as it is  outside of any assignment context.  Any discussion or sharing of code outside these guidelines constitutes an honor code violation. Suspected honor code violations are taken very seriously, and will be reported to the Honor Committee. (See the CS Department Honor Code and the GMU_Honor Code)

(2) No incorporation of code from any source external to the course. You may not incorporate code written by others, such as code that can be found on the Internet or in any of the numerous CS books available. You are encouraged to use external sources to enhance your understanding of general concepts, but you should not be using these sources to locate code to include in any assigned programs.  Of course, you may freely use any code provided as part of the project specifications, and you need not credit the source.  However, if you use code provided by your instructor/GTA/UTA (other than that given as part of the project specifications) or from the course textbook, you must document what portion came from those sources.  Working something out together with an instructor or TA usually will not require crediting the source, but when in doubt, simply ask to make sure. 

(3) Piazza. We encourage the use of Piazza to discuss assignments and assist one another with programming questions. You may ask questions or respond to queries regarding projects or other assignments, so long as you do not post any C code or detailed pseudo code, and so long as you do not provide specific solutions to the overall problem or algorithm design (even in English). Often, students believe that posting "simple" code is acceptable. However, because there is a wide variation in what different students and instructors regard as "simple," we must be very strict about the ban against posting code on Piazza. Only an instructor, GTA or UTA is permitted to place code on Canvas/Piazza unless it is code that has already been provided to all students (either as part of the assignment specification itself or within the class textbook - in which case the source should be stated as part of the posting).

(4) Discussing Canvas/Piazza postings outside of Canvas/Piazza.  Students must not discuss postings from Canvas/Piazza outside of the electronic system.  "Summarizing" Canvas statements or responses to another student verbally regarding an assignment is *not* acceptable, and is subject to the above ban on discussing assignment solutions. While it may seem harmless, Canvas and Piazza were set up so that all assistance could be overseen by instructors/TAs/UTAs, and it is nearly impossible to truly duplicate this type of discussion outside of the system itself, thus creating the potential for either (unknown) mistaken advice, or for unfair advantage by certain students. If you truly wish to assist a fellow student, encourage him or her to log onto Canvas/Piazza, and direct him/her to specific postings you find helpful.

(5) Back up your program regularly. You are expected to backup your program in separate files as you get different pieces working. Failure to do this may result in your getting a much lower grade on a program if last minute problems occur. (Accidentally deleting your program, having problems connecting, etc., will not be accepted as excuses for missing the posted due date/time for assignments.)

(6) Keep an untouched copy of your final code submission. It is important that you not touch your programs once you have made your final submission. If there are any submission problems, consideration for credit will only be given if it can be verified that the programs were not changed after being submitted.

(7) Code must run on zeus using gcc. Students are strongly encouraged to develop programs directly on zeus, and must test them before submission to be sure they work properly using the gcc compiler on zeus.  Students who choose to disregard this advice and develop their programs on other systems should not be surprised if their programs fail to work on zeus.  Also, please note that the instructor or TAs may not be able to answer questions regarding errors encountered on other systems.  Once makefiles are introduced, a makefile should also be included with each assignment submission.  No credit will be given for nonworking programs claimed to work elsewhere, and no extensions will be given due to compiler incompatibilities.



CLASS SCHEDULE

The class schedule will be posted online to the Canvas course.  Note that the schedule is subject to change to best serve the needs of the class.


** Final Exam: Monday, May 6 (7:30 - 10:15 a.m.) **



ADDITIONAL USEFUL CAMPUS RESOURCES