title |
---|
Syllabus |
Summer Semester, 2023
Introduction to Programming II: Learn how to use the C++ language effectively, to write readable, and efficient programs. Learn how to use the abstractions in the language, as well as writing your own abstractions. Learn about the static type system, and the C++ compilation model. Learn how to use simple data structures, and write some of your own.
The focus of the course will be twofold:
- Learn the C++ language, with a focus on using the available functionality in the STL.
- Learn how these tools work under the hood, so you can design your own data structures and algorithms.
- $40 Payment to Codio
- Recommended (but not required) textbook:
- C++ Primer, 5th Ed. by Lippman, Lajoie, Moo. ISBN-13: 978-0321714114
- You must have a desktop or laptop capable of running Zoom and screen-sharing.
- You must have a phone or tablet capable of running Zoom with a camera that can show your workspace while taking exams.
- You must have a consistent internet connection for streaming video through Zoom, and watching lecture videos.
All lectures are distributed via pre-recorded videos available each week on the course website. You are welcome to work ahead of the schedule, however, some videos will be updated as the semester progresses. Watching the videos closely (I recommend taking notes) is essential to being able to complete the assignments and exams in this course.
In-person communication can be done at help room. For all other circumstances, communication with the instructors should be done through Piazza (with a public or private post). Emails will not be responded to.
All class announcements will be made through Piazza, as well as direct messages from the instructors. The instructor reserves the right to modify course policies, scheduling, and assignment specifications as necessary.
A total of 1000 points can be accrued over the course of the semester. There will be no extra credit.
Points | GPA |
---|---|
900-1000 | 4.0 |
850-899 | 3.5 |
800-849 | 3.0 |
750-799 | 2.5 |
700-749 | 2.0 |
650-699 | 1.5 |
600-649 | 1.0 |
0-599 | 0.0 |
- In order to receive a passing grade (greater than a 0.0), you will need to earn at least 50% of the cumulative points associated with exams. Please ensure you prepare for exams accordingly.
There will be a two synchronous exams, each worth 200 points. A midterm exam after the midpoint of the semester and a final exam during the last week. Details regarding each will be announced as the dates approach.
A homework assignment will be due every Monday and Thursday at 10 PM. Each homework assignment is worth 60 points. There will be 12 assignments given, but only the top 10 assignments will count toward your point total (the two lowest-scoring assignments will be dropped). Thus, you can earn a total of 600 points from the homework assignments.
We are often generous when we first grade something, so please be sure that we did, indeed, make a mistake before you submit your request. The entire assignment will be regraded, not just a specific part. All requests for re-grades must come within one week from the return of the graded item. No requests will be considered thereafter, so please be sure to review your returned assignments promptly.
Make-ups for examinations may be arranged if your absence is caused by a documented illness or personal emergency. A written explanation (including supporting documentation) must be submitted to your lecture instructor via Piazza; if the explanation is acceptable, an alternative to the examination will be arranged. When possible, make-up arrangements should be completed in advance.
A student who is unable to complete an assignment by the specified due date because of illness or a personal emergency should contact their lecture instructor. If the student's explanation is acceptable, the assignment due date will be extended (or their lecture instructor will make other appropriate arrangements).
As a Spartan, I will strive to uphold values of the highest ethical standard. I will practice honesty in my work, foster honesty in my peers, and take pride in knowing that honor in ownership is worth more than grades. I will carry these values beyond my time as a student at Michigan State University, continuing the endeavor to build personal integrity in all that I do.
The work on graded assignments and exams must be solely your own work, not that of others. You should not be collaborating, tutored, or guided on any graded work. You are welcome to practice with others on exercises from the textbook, or on other materials, but the work you submit must be solely your own work. The use of tutors, friends, AI, solution sharing websites, etc. is grounds for course failure.
Each assignment submission is electronically and manually compared to all other solutions (in this course and previous offerings) to identify similar solutions.
Under no circumstances should you share any part of an assignment solution with another student. Simply showing your solution to another student almost guarantees detection by the plagiarism software. Past experience shows that a student who asks to "look at" your solution will copy parts of it or pass it along to someone else who copies it.
Plagiarism (unsourced use of other's intellectual property) is not allowed. However, citing and using other's works is generally fine (please ask if uncertain) as long as the material wasn't made specifically for solving the assignments in this class. The use of material or code from a student that previously took the course is an explicit instance of academic dishonesty. Intellectual collaboration with other students in the class is allowed, but each student should write (and not share) their own code. If a student submits code that they don't understand, such is also an act of academic dishonesty.
A goal of this course is to teach professionalism. Any instance of academic dishonesty will be viewed as evidence that this goal has not been achieved, and will be grounds for receiving a final grade of 0.0. Examples of academic dishonesty include (but are not limited to):
- Copying another person's code or exam answers.
- Using code implemented by someone else intended to solve this class' assignments (i.e., don't get someone else to do the assignment for you).
- Using code independently implemented by someone else without attributing credit (i.e., you can use tools, libraries, or code snippets from the web, but only with proper citation). Please note that code generating tools like Github Copilot and ChatGPT are not allowed on graded assessements.
- Writing code that deceptively passes the test cases, but doesn't solve the problem given. In other words, abusing automatic grader mechanisms to gain unearned points (hard-coding).
- Using sources whose purpose is to provide assignment solutions (e.g. Chegg, YahooAnswers, ChatGPT and other large language models).
- Distributing course content without instructor permission.
- Having another person that isn't an instructor or TA aid you in implementing a solution to an assignment. Tutors are not allowed to assist you on graded material.
- Submitting a solution that you don't understand / can't explain to an instructor.
- Using assignment solutions provided to a previous iteration of this course.
- Providing false information to the instructor about matters related to the course.
- Facilitating another student in any of these activities.
The following stories are real cases of academic dishonesty that I've encountered in my classes. I'm describing them here so that it is clear to each of my students what is allowed in my classes. In all cases of academic dishonesty, I will file an Academic Dishonesty Report and usually fail or severely reduce the student's grade.
- A student found a solution written by another student (who took the class in a previous year). That student modified the solution (changed variable names, restructured code) and submitted the assignment.
- A student worked closely with another student on an assignment and they showed each other their code in the computer lab. Although no files were exchanged, nor was there any copy/pasting, their solutions converged enough to be detected by my plagiarism detection software.
- A student found a solution to a similar problem in the class written by a third-party (someone not associated with the class). The student submitted a solution based on the found solution, without attribution to the original source.
- A student was posting homework questions to StackOverflow and soliciting for other's to solve their assignments for them, instead of just asking the instructors privately for assistance.
You must provide attribution if you make use of sources beyond the material given to you in this class. The attribution should be commented in your code and/or added to a README file included with your assignment. Please ask if you are uncertain as to if a source is allowed to be used in your assignment.
Example solution with attribution:
# The assignment is to read in a string that looks like "010 001 0101"
# and print out sum of the binary numbers with zero padding.
input_str = input()
bin_strs = input_str.split()
def convert_bin_str_to_int(bin_str):
# Discovered int function from:
# http://stackoverflow.com/questions/8928240/convert-base-2-binary-number-string-to-int
return int(bin_str, 2)
# In discussion with Grant King, we found that the map function
# would be useful in converting both numbers
ints = map(convert_bin_str_to_int, bin_strs)
# This source helped me determine how to print binary numbers with padding:
# http://stackoverflow.com/questions/13599638/how-to-return-a-number-as-a-binary-string-with-a-set-number-of-bits-in-python
print("{0:06b}".format(sum(ints)))
Sources which don't require attribution:
- Class-related materials (lectures, example code).
- Documentation from the linked reference websites (python.org, cppreference.com, cplusplus.com).
Everything else, including conceptual discussions with other students should be attributed.
This course has adopted the Chegg and Similar Sites policy. Submission of student work (e.g. assignments and/or exam solutions) based on those found on Chegg, Brainly, Quizlet, and other similar websites will result in an Academic Dishonesty Report (ADR) and an automatic failing grade of zero (0.0) for the course. The ADR for students personally posting questions from assignments or exams to these sites will request additional sanctions.
The goal of this class is for you to learn. If you find that anything is coming in your way of that goal, please talk with us about it. We plan to keep the class flexible to the learning styles that seem to work best for the students, so feedback is always appreciated. In particular, due to the ongoing global pandemic, we understand that you might need additional support. Please don't hesitate in reaching out to us for anything that might affect your learning.
If there are unfortunate circumstances that would lead you to have unexpected absences, MSU has a Grief Absence Policy. Please contact the Associate Dean, and we will make every effort to aid you in continuing the class after we receive confirmation from the administration.
Michigan State University is committed to providing equal opportunity for participation in all programs, services and activities. Requests for accommodations by persons with disabilities may be made by contacting the Resource Center for Persons with Disabilities at 517-884-RCPD. Once your eligibility for an accommodation has been determined, you will be issued a verified individual services accommodation ("VISA") form. Please present this form to me (Dr. Nahum) at the start of the term, or as early as possible, via a private Piazza post with the uploaded VISA.
Accommodations will be made for religious observances if requests are made well in advance. Since religious observances are usually known at the beginning of class and assignment due dates are in the schedule, we expect students to request accommodation at the beginning of the semester, but we require that accommodations be requested at least 2 weeks before the observance. See MSU's Religious Observance Policy for more details.
All students are expected to be responsible users of the computer system and laboratory classrooms provided for this course. Account usage guidelines published by the Department of Computer Science and Engineering are posted under the CSE AUP.