Syllabus for CS149 Spring 2023 Section 3 - Instructor: Chao
Objectives and Expectations
Official course description: Fundamental problem-solving techniques using a modern programming language.
By the end of this course, you should be able to:
*Explain fundamental programming concepts (e.g, variables, methods, decisions, loops, arrays, objects) using appropriate terminology.
Describe basic elements of high-level programming languages, including expressions, statements, functions, modules, and libraries.
- Read and interpret software specifications and write source code from them.
- Use automated software tools and processes to test your programs thoroughly.
- Distinguish appropriate collaboration from cheating on assignments and exams.
- Evaluate your own work for compliance with requirements and style guidelines.
- Develop correct and efficient algorithms to solve problems using computation.
Purchase the text through the Buy Book assignment in Canvas.
You are responsible for all material discussed in lecture and discussion section and posted on the class web page, including announcements, deadlines, policies, etc.
Your final course grade will be determined according to the following percentages:
|Homework / Programming Assignments
|In Class Quizzes
Reading Quizzes, Labs, Homework / Programming Assignments
This portion of your grade will be based on graded labs, reading quizzes, and homework problems assigned. I will drop a to be determined amount(probably 2-3) of reading quizzes and labs at the end of the semester to account for the 'bad day' or unforseen circumstances for missing a particular day.
Quizzes(In class) There will be 6 in-class quizzes on Thursdays the following week will be a make up quiz for that week and you may take the higher of the two grades as your final score for that quiz.
Final Exam The final exam will be two hours: one for written problems, one for coding problems. If you must be absent during an exam for a legitimate reason, you must contact me at least one week beforehand to make special arrangements. Failure to make prior arrangements for a missed exam will result in a zero grade. The instructor reserves the right to give students who do not earn 60% of the points on the final exam no higher than a C for the course. Except in extraordinary situations, you will not be excused from exams. Your instructor will be the sole arbiter of whether a situation qualifies as extraordinary. Hence, you should behave as if you will not be excused from exams for any reason.
Letter grades will be assigned on the scale A=90-100, B=80-89, C=70-79, D=60-69, F=0-59, with potential minor adjustments after considering the overall performance of the class and actual distribution of numeric scores. I will use “+” and “-” grades at my discretion.
Final course letter grades may be curved if necessary at the end of the semester, based on each student's overall performance for all coursework.
If you believe I have made an error while grading your work or calculating your final score, please bring it to my attention after class or during office hours. If I determine that there has been a simple mistake, I will fix it immediately and no formal request is necessary.
If you believe an exam question or assignment has been graded unfairly, you must submit a verbal or written formal request for a regrade. Such requests must be submitted within one week of when the assignment in question is returned to you. Any coursework submitted for reconsideration may be regraded in its entirety, which could result in a lower score if warranted.
Instructor Contact Info
Please post generic questions to Piazza, where other students may answer and/or benefit from my answers. My email is chaoaj at the standard domain. My office is in ISAT 264, and my office hours are posted on the main course page.
I am also sometimes available outside office hours by appointment; if you wish to make an appointment, send me an email.
Important announcements will be made in class and/or on the class website. Please make it a habit to check the web page daily.
Although every effort has been made to be complete and accurate, unforeseen circumstances arising during the semester could require the adjustment of any material given here. Consequently, given due notice to students, I reserve the right to change any information on this syllabus or in other course materials.
You are permitted to use course materials for your own personal use only. Course materials may not be distributed publicly or provided to others (excepting other students in the course), in any way or format unless explicitly allowed.
Attendance and Participation
Attendance is not mandatory, but participation will be used as a part of your lab/quiz grade portion. I strongly encourage you to attend every class session and participate fully in order to derive the maximum benefit of this course. If you believe that there is something I could change about the way I am handling the course in order to improve its effectiveness for you, please let me know via email or office hours.
Please silence your cell phone while class is in session. If you have a laptop or tablet, you are encouraged to bring it to class and use it to work along with programming examples and exercises. Mute the volume to avoid unintended interruptions, and do not use any electronic devices for activities that may distract other students. Repeated violations of this policy may result in disciplinary action or a grade penalty in the course.
I strongly encourage you to check the main website and the Piazza web forum regularly for important announcements (usually regarding programming projects). You may also use the Piazza forum to ask general questions of interest to the class as a whole (e.g., administrative issues or project clarification questions) as well as to offer each other general advice on class assignments. However, do not post any information that would violate the university academic integrity policy. If you are unsure about this, please email me for approval before you post.
Written and/or programming exercises will be assigned each week. These exercises are meant to give you a chance to practice the skills you need to develop in this course. You are welcome to discuss these assignments with your classmates and to use generative AI tools to help develop and understand solutions.
Be careful! Being able to understand a friend's code, or code generated using an AI tool, is very different from being able to write code on your own. If you become over-reliant on outside assistance you won't develop the skills you need to succeed on quizzes and exams.
Late Homework Policy Deadlines exist, in part, so that we can discuss solutions in class. Under normal circumstances, late work will not be accepted. Contact me if you are facing unavoidable circumstances that will prevent you from submitting an assignment on time. I will do my best to work with you to make appropriate accommodations. Please don't wait until the night before to get started!
PA's must be submitted electronically following the instructions given in class and on the website. Assignments may not be submitted by any other means (e.g., do not email your projects to me unless I request that). It is your responsibility to test your program and verify that it works properly before submitting it.
All assignments are due at 23:00 (11:00pm) on the day indicated on the assignment unless noted otherwise. Late assignments will not be accepted.
Regardless of the any other late policy, I reserve the right to refuse to grade any programs submitted after the beginning of the second class period following the project deadline, because I may discuss the solution in class.
Project extensions will not necessarily be granted due to server congestion, system problems, network problems, power outages, etc., so do not wait to submit a program until the night it is due. No consideration in grading will be made for errors made in transferring files or submitting the wrong version of your project. Having a working, non-submitted version will not count; only submitted code will be be counted.
You will be responsible for developing your own techniques for testing your projects before submitting it. I will grade your assignment based on test cases not provided to you in advance. Because grading may be done automatically, you must follow the project specification exactly.
Your code will be graded on a combination of correctness, completeness, documentation, and code style.
Any "hard coding" in a project assignment will result in a score of zero for that assignment, and is considered a bad-faith effort. Hard coding refers to attempting to make a program appear as if it works correctly, when in fact it does not. One example of hard coding would be printing the desired output instead of computing it. If you have any questions as to what constitutes hard coding for a particular assignment, be sure to ask ahead of time.
You are expected to comply with the JMU Honor Code as stated in the Student Handbook and available from the Honor Council website on all assignments, projects, and exams.
Students who violate the Honor Code (https://www.jmu.edu/honorcode/code.shtml) will receive a reduced or failing grade in the course. Other penalties may be imposed, and all violations will be reported to the Honor Council. Representing someone else's work as your own, in any form, constitutes an honor code violation. It is also a violation of the honor code to "render unauthorized assistance to another student by knowingly permitting him or her to see or copy all or a portion of an examination or any work to be submitted for academic credit." Automated tools may be used on any assignment, at any time, to detect inappropriate collaboration and the originality of submissions.
You are permitted to use AI technology in ways that support your learning. The use of AI is strictly prohibited during quizzes and exams, so make sure you can program independently. Refer to the Generative AI in Computing Education Student Guide for examples of appropriate use.
A key component of academic integrity is giving credit where credit is due. If you receive assistance, either from another student, an online source, or an AI-enabled tool, you must provide a clear and explicit acknowledgment of that assistance in your submission. To that end, every homework assignment must include a statement describing your process for completing the work. Here is an example illustrating the format that I expect:
"I was able to complete questions one and two with no assistance after reading the zyBook chapter. I got stuck on question three, but TA Jamie talked me through the solution during office hours. My solution for that question is based on her advice. I had no idea how to get started on question four, so I put the prompt into ChatGPT and asked it for an annotated solution. I didn't understand the resulting code, so I talked it over with my friend Xavier. He explained how negative string indexing works, which helped me to understand the code. My final submission for that question is copied from the ChatGPT output."
Any submission without such an acknowledgment statement will receive an automatic zero.
Full credit for homework assignments is conditional on making a good-faith effort to develop the skills necessary to answer each question independently. Submissions like the following would result in a zero on the assignment.
"I was in a hurry so I just copied all of the prompts into ChatGPT and uploaded the resulting code."
"My friend Bill had already completed the assignment and sent me a copy of his solution. I submitted a copy of his code after reading it over and improving some variable names."
If I find evidence of a violation of the honor code, I will bring the matter to the attention of the involved individuals via email and request a face-to-face meeting. As per section IV of the honor code, first time student offenders may agree that a violation has occurred and accept an appropriate penalty by submitting an "Informal Resolution Agreement Form" to the honor council. If the student is not a first-time offender or if there is disagreement about the violation or penalty, the matter will be refered to the honor council under section V of the honor code.
You must achieve a B– or better grade to continue on to CS 159.
Adding and Dropping the Course
Students are responsible for adding and dropping courses. Please consult the appropriate academic calendar for the exact deadlines. I will not give "WP" or "WF" grades to students requesting a drop after the deadline except in extraordinary circumstances.
If you need an accommodation based on the impact of a disability, you must contact the Office of Disability Services if you have not previously done so. Disability Services will provide you with an Access Plan letter that will verify your need for services and make recommendations for accommodations to be used in the classroom. Once you have shown me this letter, we will sit down and review the course requirements, your disability characteristics, and your requested accommodations to develop an individualized plan appropriate for this course. I will not make any accommodations without the appropriate documentation, as I am not qualified to diagnose disabilities.
Besides the policies in this syllabus, the University's policies apply during the semester. Various policies that may be relevant appear in the Undergraduate Catalog.
Excused absences will be granted at my discretion and only with appropriate documentation. Please contact me as soon as possible if you wish to request an excused absence.
Missing an exam for reasons such as illness, religious observance, participation in required university activities, or family or personal emergency (such as a serious automobile accident or the funeral of a close relative) all are circumstances that may qualify as an excused absence. Where possible you should attempt by all means necessary to attend and take exams at their regularly scheduled class period.
In case of inclement weather, we will hold class online via Zoom. A link will be available via an announcement in Canvas. Otherwise, this class will operate in accord with JMU's official cancellation policy.
CS 149.Introduction to Programming. 3 credits.
Fundamental problem-solving techniques using a modern programming language. Topics include variables, input/output, decisions, loops, functions, arrays, and objects. Students learn about algorithm development, testing strategies, and software tools. Students may not receive credit for both CS 139 and CS 149.