This course is intended for students in computer science or engineering majors. It covers: a) Program development in a complex operating environment; b) Problem-solving methods and algorithm development in a high-level programming language; c) Program design, coding, debugging, and documentation using techniques of a good programming style.
Prerequisite: A grade of C or better in either MATH 127 or MATH 128; or MATH 181 or SAT score of 630 or higher or ACT Math score of 28 or higher.
|Section(s):||1003, 1004, 1005:
web remote 1p - 4:50p We
18 Jan 2022 -- 18 Dec 2022
|Weekly Contact Hours (for on-campus sections):||
|Weekly Study Hours:||
|You must be registered to take this class.|
|Professor:||Dr. David Brodersen|
|Office Location:||Henderson C201D|
|I will reply to emails sent using Canvas email or to my CSN email address, above, within 72 hours. Sometimes Canvas Email doesn't work. If you do not receive a reply within 72 hours, please resend your email to the address above using your student email account. I do not read emails during the weekend. Please use your CSN email address for official communications and make sure to include your name, class, and section number.
Please submit questions regarding assignments at least 24 to 48 hours before they are due to allow time for a response that you can implement. This will require you to begin work on your assignment shorty after you receive it.
Late Instructor Policy: When meeting synchronously (classroom or web-remote), students must wait for 15 minutes if the instructor is late. The class is excused if the instructor is delayed beyond 15 minutes. Check Canvas for updates. The same is true if students are late. If a class is scheduled to meet at 6:00 pm, I will wait until 6:15 pm. If no students show up for the virtual or class meeting by 15 minutes after the start time, I'll close the meeting.
By the end of the semester, students who earn a grade of C or better will be able to:
purchase new or used, physical or electronic.
Shotts, William E. Jr.
No Starch Press. 2012.
ISBN-13: 978-1-59327-389-7. (download link is available in Canvas)
No Press. 2022.
(download link is available in Canvas)
CSN provides computer labs with any needed software for you to complete your work. However, most students prefer to do their work from home. You may also access the department's Linux server remotely, e.g., from your home.
Most of the software used in the course will be applications that you already have on your computer, such as the Chrome Browser. Below you will find the three major areas that either utilize existing software on your systems or require that you install additional software.
This class makes use of Canvas, CSN's Learning Management System (LMS). You can access Canvas via the link: https://csn.instructure.com/ using most modern Web browsers. Once you are in Canvas, the verticle blue bar on the left is known as the global navigation menu because it allows you to access areas outside of your course. Just to the right of the global navigation menu is the course navigation links, which provide you with access to the various areas in the course.
Discord is an online application for messaging and audio/video communication. If you go to https://support.discord.com, you can view all the information you need for setting up and using discord, which includes downloading discord apps to your desktop and/or mobile devices. We will make extensive use of Discord this semester to provide academic support for software students, such as tutoring or obtaining answers to questions. The invitation link to join our server will be provided in the announcements or course home page. This link will take you to the #open-tickets channel. Follow the instructions and expect to eventually provide your:
You should be granted access within 24 hours. If you have any problems with the link to join the server, please let me know. Once you have access, on the left, you should see the channel. The images below provide a highlighted cs135 example and a highlighted dbrodersen section example.
Clicking on cs135 will give you access to all the TAs where you can ask questions about C++. Clicking on dbrodersen sections will take you directly to questions germane to my course that a TA or other instructor may not be able to answer.
It is likely that you won't see my thread.
If you would like to be able to see my sections thread for cs135 (dbrodersen sections), please hover over cs135 to see "More Active Threads", and then click on the thread you would like to visit. It will then appear under cs135.
The Bellagio server is a computer on campus designed to process requests and deliver data to other computers over the internet or a local network. We will be using Bellagio to develop and compile our programs so that they can be executed on the server. Utilities on Bellagio are available to check the spelling in our code, make sure that your code is formatted correctly, and make it possible for you to submit your homework assignments for grading.
You will receive login credentials to access the CIT Department's Linux server that has all the tools needed for this course. Any assignments where you have to write C++ code will be submitted using this server. Look for an email at your CSN email address with your login information. The server will use your CSN email address for system messages pertinent to your account. Therefore it is best to maintain and regularly check your CSN email and Canvas account! If you do not yet have a CSN email account, go to https://www.csn.edu/email to set up your account.
The latest edition of the CIT Linux Server Lab Manual is available online if you go to the Bellagio Home Page you will find a link to the manual.
If you plan to work on campus, the CSN computer labs each have specific pods of computers that have the MobaXterm software installed. Ask a lab monitor to direct you to the correct pod. You may also use any of the Apple iMac computers.
You are responsible for the reliability and speed of your internet connection when off-campus.
I'm sorry, but college policy prohibits me from installing software on your computer.
Note: You may use any operating system, compiler, or integrated development environment of your choosing while developing your program. However, your programs must compile and execute correctly on the department's Linux server to receive credit.
When grading assignments, I compile all programs using the following command:
It is advisable that you: Compile your programs one last time just before submission to make sure your program works and that you are sending me the right file. Students have handed in a previous revision of their code by accident, which cost them points on the assignment. The goal is to write code that compiles without warning or error messages. Once the deadline for your code has passed, I will not accept any submissions for the assignment even if you sent me the wrong file or revision.
|01||Aug 29||Introduction, Syllabus, Discord
Beginning Linux Course (BLC)
|Syllabus Quiz, Getting Started,
|02||Sep 05||Linux Account, Linux Exercise
Malik Ch 1 - Overview
quiz01, Ch01, lab01, pa01
|03||Sep 12||Malik Ch 2 - Basic Elements of C++||quiz02, lab02a, pa02a|
|04||Sep 19||Malik Ch 2 (Cont)||lab02b, pa02b|
|05||Sep 26||Malik Ch 3 - Input/Output||quiz03, lab03, pa03|
|06||Oct 03||Malik Ch 4 - Selection||quiz04, lab04, pa04|
|07||Oct 10||Malik Ch 5 - Repetition||quiz05, lab05, pa05|
|08||Oct 17||Midterm Exam, Ch 1 - 5, Linux||Written Portion
|09||Oct 24||Malik Ch 6 - User-defined Functions||quiz06, lab06a, pa06a|
|10||Oct 31||Malik Ch 6 (cont)||lab06b, pa06b|
|11||Nov 07||Malik Ch 7 -
||quiz07, lab07, pa07|
|12||Nov 14||Malik Ch 8 - Arrays and Strings||quiz08, lab08, pa08|
|13||Nov 21||Thanksgiving Week|
|14||Nov 28||Malik Ch 9 - Structures||quiz09, lab09a, pa09a|
|15||Dec 05||Malik Ch 9 (cont)||lab09b, pa09b|
|16||Dec 12||Final Exam, Ch 6 - 9||Written Portion
|This schedule is tentative and subject to change as deemed appropriate by the instructor with advanced notification. Notification will be provided in class or in canvas.|
|Sep 04||Last day for 100% Refund|
|Sep 05||Labor day – College Closed|
|Sep 12||Last Day to Drop a Class WITHOUT a Grade of W|
|Last day for 50% Refund|
|Nov 04||Last Day to Officially Change from Credit to Audit|
|Last Day to Drop a Class WITH a Grade of W|
|Nov 11||Veterans Day – College is Closed|
|Oct 28||Nevada Day - College is Closed|
|Nov 24-25||Thanksgiving Break: No Lecture this week|
|Dec 12||Final Exam Week: Due Date is posted in Canvas|
|Dec 19||Grades are Due from Instructors|
All Assignments are scheduled in Canvas. As a general rule, I schedule one quiz, lab, and programming assignment for each chapter. However, some chapters require that I schedule two assignments to avoid making assignments too complicated. Due dates are posted in canvas and are strictly enforced
Please note: I do not accept late assignments, nor do I provide makeup assignments. It is best to work ahead if you know you are going to have conflicts or time constraints.
Exams are scheduled, but you can expect some unannounced quizzes. If I feel that students are not "getting it," I may add an additional assignment to foster understanding.
If they are available, I will be using TAs to grade your work. The standard used for grading an assignment is called a grading rubric. Complete details on the grading rubric can be accessed by picking the Grading Rubric button on the Canvas Home Page for this course.
I calculate an overall score based on your performance on homework assignments, labs, and assessments. Assessments are scheduled with specific due dates/times. The following weights are applied to determine your course grade:
|To pass the course with a grade of C or better, you must have a lab score of 70% or better and take both the midterm and final|
The following scale is used to determine your final grade from the percentage earned in this course.
|Letter Grade||Overall Score|
|A||100 to 94%|
|A-||< 94 to 90%|
|B+||< 90 to 87%|
|B||< 87 to 84%|
|B-||< 84 to 80%|
|c+||< 80 to 77%|
|C||< 77 to 74%|
|C-||< 74 to 70%|
|D+||< 70 to 67%|
|D||< 67 to 64%|
|D-||< 64 to 60%|
|I reserve the right to adjust your final grade up/down based on your attendance, participation, and effort.|
Instructors do not have the option of withdrawing students from a course. The official withdrawal date is available in the calendar for the current semester on the CSN Online Calendar.
You are strongly encouraged to discuss your decisions with an academic counselor, academic adviser or success coach AND Student Financial Services, because these decisions may affect your financial aid and Satisfactory Academic Progress. Students receiving financial aid may find their awards reduced.
If you wish to receive a W in lieu of a grade, you MUST withdraw yourself officially from the class. Once you have withdrawn (dropped), you must discontinue attending class. Alternatively, you may wish to change from Credit to Audit and continue to attend the class.
You will need to complete the Auditing Classes Form if you wish to change to audit. Instructions for submitting the form are included in the instructions at the top of the form.
Attendance and participation are mandatory.
If you have any concerns about this course and/or me, please contact me first. Give me at least 72 hours to respond. If I cannot resolve your issue, you are welcome to contact CIT Department Office at 702-651-5976. You will be directed to the appropriate Program Director or the Department Chair who will first ask you if you contacted me and gave me time to respond to your concerns. You will remain anonymous, if possible, and all communications will be strictly confidential. Please DO NOT wait until the last minute to make your concerns known to me and/or to the CIT Department. I have been teaching for nearly 40 years and have had much practice addressing concerns both for myself and other instructors. It is very rare that I am unable to effectively address a concern to the satisfaction of a student.
Taking the words of others or presenting the ideas of others as your own not only limits your academic research skills, it also violates the CSN’s Student Academic Integrity Policy. Cheating on exams or other course work also violates the CSN Student Academic Integrity Policy. You can find more information about CSN’s Academic Integrity Policy at the Academic Integrity Web Site. The minimum penalty for such offenses in this course is to fail the assignment. Failing the course will also be considered as an option. Infractions of the CSN Student Academic Integrity Policy may lead to suspensions, expulsion, transcript notations or other sanctions.
You SHOULD NOT attempt to pay anyone to complete your work. You SHOULD NOT consult any web sites that provide answers to assignments.
It is an act of plagiarism to submit work that is copied or derived from the work of others and submitted as your own. For example, using a solution from the Internet or a solution from another student (past or present) or some other source, in part or in whole, that is not your own work is a violation of the Academic Integrity Policy. Many infractions I see make use of solution code found online. The best way to steer clear of this possibility is not to search for online solutions to the programming assignments. Moreover, looking at someone else's solution code in order to determine how to solve the problem yourself is also an infraction of the Academic Integrity Policy. In essence, you should not be looking at someone else's code in order to solve the problems in this class. This is not an appropriate way to "check your work," "get a hint," or "see alternative approaches."
In particular, you should not ask anyone to give you a copy of their code or, conversely, give your code to another student who asks you for it. Similarly, you should not discuss your algorithmic strategies to such an extent that you and your collaborators end up turning in the same code. Moreover, you are expected to take reasonable measures to maintain the privacy of your solutions. For example, you should not leave copies of your work on public computers nor post your solution code on websites.
If you received aid while producing your solution, you should indicate from whom you got help and what help you received. A proper citation should specifically identify the source (e.g., person's name, book title, website URL, etc.) and a clear indication of how this assistance influenced your work (be as specific as possible). For example, you might write "I discussed the approach used for sorting numbers in the
sort\_numbers function with TA Mary Smith." If you make use of such assistance without giving proper credit, you may be guilty of plagiarism.
It is also important to make sure that the assistance you receive consists of general advice that does not include having someone else write the actual code or show you their code. It is fine to discuss ideas and strategies, but you should be careful to write your programs on your own, as indicated in Rules 1 and 2.
I have no desire to create a climate in which students feel as if they are under suspicion. A key point of the Academic Integrity Policy is that we all benefit from working in an atmosphere of mutual trust. Students who deliberately take advantage of that trust will poison that atmosphere for everyone. I only ask that you be upfront and transparent. If you use a Web resource**, just cite the exact source(s). This becomes part of the formal documentation for your program and a ready reference for yourself in the future:
Just be transparent, please. Sneaky behavior destroys trust really quickly.
|First:||You will receive a zero on the assignment, and I will reduce your final course grade by one full letter grade (e.g., if you would have earned a B+, I will assign a C+ instead).|
|Second:||You will receive a failing grade for the course. The class cannot be dropped to avoid a failing grade.|
CSN Student email - All students enrolled at CSN have a CSN Student Email account. All information from the college will be sent to your CSN-issued student email address (enrollment information, financial aid information, cashier information, college events, etc.). It is extremely important that you check your student email daily. You can access your student email through GoCSN (go.csn.edu). Once you validate your student email address you will have access to Microsoft Office 365 for up to five devices and 1TB of OneDrive storage. Visit the CSN Information website for additional information.
Attendance Policy - College assumes maturity, seriousness of purpose, and self-discipline for meeting the responsibilities associated with each course. If you will need the instructor to sign documents testifying about your attendance, YOU must come to the instructor after each class you attend to let them know you were there. Class participation is a strong aspect of this course, and your participation is always encouraged.
Academic Integrity - Taking the words of others or presenting the ideas of others as your own not only limits your academic research skills, it also violates the CSN’s Student Academic Integrity Policy. Cheating on exams or other coursework also violates the CSN Student Academic Integrity Policy. You can find more information about CSN’s Academic Integrity Policy on the CSN website. The minimum penalty for such offenses in this course is to fail the assignment. Failing the course will also be considered an option. Infractions of the CSN Student Academic Integrity Policy may lead to suspensions, expulsion, transcript notations, or other sanctions.
You SHOULD NOT attempt to pay anyone to complete your work. You SHOULD NOT consult any websites that provide answers to assignments.
CSN Americans with Disabilities Act (ADA) Statement and current Disability Resource Center (DRC) Contact Information - The College of Southern Nevada is committed to making physical facilities and instructional programs accessible to students with disabilities. If you have a disability that may have some impact on your work in this class and for which you may require accommodations, please visit the Disability Resource Center (DRC) so that such accommodations can be considered. All discussions will remain confidential. The DRC has offices on all three campuses. These serve as the focal point for the coordination of services for students with disabilities. If you have a physical, emotional, or mental disability that “substantially limits one or more major life activities (including walking, seeing, hearing, speaking, breathing, learning and working),” and will require accommodation in this class, please contact the DRC at West Charleston 702–651–5644, or email at WCDRCStaff@csn.edu or at North Las Vegas 702–65–4045, or email at CYDRCStaff@csn.edu or at Henderson 702–651–3795 , or email at HCDRCStaff@csn.edu. For Deaf and Hard of Hearing Services contact the DRC using 702–651–4448, or email at Deaf.HH.Services@csn.edu. Any student who receives an accommodation letter from the DRC, please meet with me to discuss the provisions of those accommodations as soon as possible.
Student Rights & Responsibilities - When you choose to become a student at CSN, you accept the rights and responsibilities of membership in CSN’s academic and social community. You can find policies covering students such as Student Conduct, their Right to Know, Academic Integrity, and Disruptive and Abusive Students in the following locations:
College Library Services - CSN Libraries provide support for students completing assignments that require research and the use of information. Librarians are available to students for one-on-one assistance locating and citing quality information either online at the Library information or at one of our campus libraries. Find more information on our main website on the Library's main page.
Safety - This class does not have an experiment lab and therefore we will not be concerned about following specific safety strategies. However, Approved classroom safety procedures are posted in each classroom and are to be followed. Students are to familiarize themselves with the nearest exit to use during fire alarm exercises. Do NOT use the elevators during these drills. Students will take ALL personal belongings with them when exiting the building. No student will be allowed back into the facility until the all-clear is given.
Public Health Directives (COVID-19) - Students must follow all active CSN public health directives while enrolled in this class. Properly worn face coverings are no longer mandatory for all faculty and students in the classroom or on campus. CSN public health directives are found on the CSN Website: https://at.csn.edu/covid19.
Counseling and Psychological Services (CAPS) - The Counseling and Psychological Services (CAPS offers short-term, problem-focused counseling to CSN students who may feel overwhelmed by the responsibilities of college, work, family, and relationships. Clinicians are available to help students cope with stresses and personal issues that may interfere with their ability to perform in school. The service is provided confidentially and free to currently enrolled students. To schedule an appointment, please call CAPS at WC (702) 651-5518, NLV (702) 651-4099, and HN (702) 651-3099.
Food and Housing Insecurity Support - Any student who has difficulty affording groceries or accessing sufficient food to eat every day, or who lacks a safe and stable place to live and believes this may affect their performance in the course, is urged to contact Counseling & Psychological Services (CAPS), for a list of resources and support.
References - Safari Tech Books available through the library offer an excellent source of supplemental resources that you may use for this course. To find Safari Books Online, go to the Library's website. Click the Browse Databases button. In the A-Z Databases page that appears, click S to filter. The link to Safari Books Online should be at or near the top of the list. Initially, you will have to enter your student email address, then create an account with Safari. Subsequently, you will use your email address and your Safari password to access the Safari resources.
Required extra- or co-curricular activities - All activities are based on projects and exams assigned throughout the course. Any required extra activities will be clearly explained in class.
Additional fees - There are no additional fees for this course.
Advising & Coaching Services - Advisor/Success Coaches help students assess academic strengths and limitations, learn academic success strategies, explore careers, declare a major, navigate the educational system, access campus and community resources, and connect to campus life. The department also manages the CSN Faculty E-Alert System assisting instructional staff by working with students on strategies and interventions that lead to successful course completion. Contact Information: Charleston Campus: Building D – Student Services Area : 702–651–5670, North Las Vegas Campus: Student Services Area: 702–651–4049, Henderson Campus: Building B – Room 120: 702 – 651–3165. Visit the Advising website for more information.
Change to Audit – You may obtain a form from the Registrar’s Office. Print the form and fill it out, check the boxes, sign, and date. Submit the completed form in person at the Registrar’s Office. To avoid visiting the registrar’s office in person, you may scan or photograph the signed form and send it, using your CSN student email, along with a clear color copy of your state ID to MyCSN.Updates@csn.edu
CLASS POLICIES - All exams will be taken online using the Canvas learning management system.
Programming and Lab assignments will be submitted through the Bellagio server. You can take your exam from anywhere with access to the Internet.
All course material is available online in Canvas. While the design of this course allows flexibility in your scheduling, please realize that the deadlines are just as strict as any other course. You should check the calendar and discussion postings daily and allocate your time accordingly to complete the readings and be prepared for the exams. Due dates will be strictly adhered to. You will use the mail and discussion features of Canvas to contact me or ask questions.
A note on the assignment release schedule - To stay on task, I release chapter material and assignments on a timely basis. Exams can only be taken during the scheduled period. If you like to get material earlier than the rest of the class, send me an e-mail message and I will give you access to the material. The links to assignments and exams will disappear after their respective due dates. Some students have complained that some links disappear from time to time. This is most likely due to system issues or incommutability with your web browser. Please send an e-mail message informing me about any links that have disappeared from your view.
Online sections offer flexibility where you need to manage your time to achieve success. I will assign programming projects that will be graded, and you will have to take exams by specified due dates. It is extremely simple to ignore due dates and fall behind which I hope we can seriously avoid!
Hybrid section (when offered) – Using the hybrid format, you physically attend class once a week for 80 minutes and are expected to spend another 80 minutes online.
Web-Remote – Using this format, courses meet virtually during the scheduled time via a web conference for live lectures.
A rule of thumb for a 3-credit on-campus class is that you attend class about 3 hours a week and study a minimum of 6 hours a week outside of the classroom. For an online course, plan on 9 hours a week if you are taking a 3-credit course.
This is a single-person class; meaning that you must turn in your own work. You are not allowed to collaborate or consult with anyone else while working on an exam. You are not allowed to collaborate on completing assignments. You should not be looking at each other’s code for assignments. You can freely discuss items in the general sense. Cheating in any form will not be tolerated.
Internet Access - Internet access is your responsibility. This class can be accessed from any computer with Internet access anywhere in the world. Therefore, excuses such as “My computer is not working” or “My provider was down” are not acceptable. If you find yourself in a real jam, you may drive to any CSN site and use one of the computers in the CSN open computer labs. Of course, if there is a computer problem originating from CSN, then I will take corrective action. But in all other instances, it is your responsibility to ensure your own Internet access.
Computer Labs – CSN provides access to computers at many physical locations. For Computer labs hours and locations, visit the Computer Lab
Software Lab - The Software lab will be virtual and be conducted via Canvas and Discord. It will be available starting on August 29, 2022. Many CIT department courses have embedded tutors. For these courses, your instructor will let you know about the tutoring services. The Centers for Academic Success (CAS) may also provide one-to-one tutoring. For more information, contact CAS by visiting CAS website.
Networking Lab - The networking lab will be open by appointment only. For location/date/time information, please visit the CIT Information website. Click on Networking and Software Lab Hours
Academic Advising - Academic Advisors help students assess academic strengths and limitations, learn academic success strategies, explore careers, declare a major, navigate the educational system, access campus and community resources, and connect to campus life. Contact Information: Charleston Campus: Building D – Student Services Area : 702–651–5670, North Las Vegas Campus: Student Services Area: 702–651–4049, Henderson Campus: Building B – Room 120: 702–651–3165. For more information visit Academic Advising.
Centers for Academic Success (CAS*)* - Centers for Academic Success (CAS) offers quality DROP-IN academic assistance to all students enrolled in for-credit courses at CSN. Tutors are available for most general education courses and some historically challenging courses. Academic learning support includes assistance with learning strategies, Canvas, Smarthinking online tutoring, Microsoft Office, reading, writing, oral presentations, math, and science. CAS tutors also provide support to study groups and assistance for placement test preparation. CAS is open Monday through Sunday to be more accessible to all students. Hours for all locations are Monday – Thursday 9:00 am to 6:00 pm and Friday – Sunday 11:00 am to 4:00 pm. You may visit the CAS website for more details about online and in-person services. You may also contact us at one of our offices: Charleston Centers (651- 5732), North Las Vegas Learning Commons (651-4232), and Henderson Learning Commons (651- 3125).
Canvas Computer Instructions & Technology Help Desk - The Canvas Student Quick Start Guide be found on the Canvas website. The entire Student Guide may be found on website. Telephone Support for Distance Education students having problems logging into a course, using course website tools, or other technical problems can be found by contacting the CSN Technology Help Desk locally at 702–651–4357, or via 1-800–630–7563 toll-free, 24 hours/day, 7 days/week.
Objectionable materials - Instructors have the responsibility to set and maintain standards of classroom behavior appropriate to the discipline and method of instruction. No objectionable materials or language will be used during this class. This includes all possible modes of the class: online and in person. The instructor will make the final determination regarding any objectionable materials or language. Students may not engage in activities the instructor deems disruptive or counterproductive to the goals of the class. Instructors have the right to remove offending students from class.
Recording Class - Recordings of the class are not allowed without the explicit permission of the instructor.
Early Alert Program - Early Alert Referral Program (MyCoyotePLAN) – A referral program to connect students with college resources when assistance is needed to achieve success. Referrals may be initiated by faculty and staff as well as by students through MyCoyotePLAN. After a referral is submitted, students will receive an email notification and will be contacted by the department to which they were referred to offer assistance.
TRIO Student Support Services - One-stop shop for first-generation college, financial aid-eligible, and disabled students offering tutoring, academic advising, career exploration, college-transfer assistance, and development of college success strategies. Contact information: North Las Vegas Campus: Building E Room 109: 702–651–4441 or visit the TRIO’s website.
Printing @ CSN - Printing in CSN classrooms, computer labs, and libraries fall under Print Wise. Print Wise provides each CSN student with a $10 credit toward printing at the start of each semester, which will provide for up to 200 black and white copies at 5¢ a page, or 40 color copies at 25¢ a page. After that, you may put money into your account online or at the CSN Cashier’s Office to purchase additional prints at the same rate. It is your responsibility to maintain your printing accounts to cover printing expenses during each semester. More information about the Print Wise system may be found at Printwise Information.
Disclaimer - This syllabus is subject to change with advance notice. Notices will be posted in the online forum. It is your responsibility to stay informed.
Limit your code to C++ commands that were presented in and before the current chapter of the text, labs, or lectures.
For each lab assignment, you are welcome to work with another student as long as you include his / her name in the header comment as an author. If you do work with another student you must heavily comment your code to make sure that I know you understand the commands.
For each programming assignment, you must work individually unless instructed otherwise. You may discuss the problem with classmates, but at no time should you discuss code in any form. You may not show another student your code, share your file with another student, look at another student's code, or tell another student what to type. Evidence of academic dishonesty will result in a score of zero for all the students involved. If you're unsure about what you can share while working on an assignment, be sure and ask.
Your program must follow the problem statement requirements in the assignment as well as the coding standards below. You will lose points for failing to follow the standards.
A header comment must be included at the top of each submitted file. Submissions without this header comment will receive a grade of zero. Copy the header comment found in https://dbrodersen.net/comments and paste it at beginning of every assignment you create. The header comment consists of the following information. Include any documentation annotations (annotations begin with the character @):
Use descriptive names for functions using naming standards discussed in class.
All functions must be documented with the following information:
Here is an example of a function documentation header:
Function bodies should not be of extended length when easily separated into multiple functions (i.e., functions should do one thing and nothing more).
Non-recursive functions should contain exactly one return statement. Functions should have one entry point and one exit point (i.e., non-recursive functions should have no more than one
Programs must be submitted on time. Late programs or programs that do not compile or run will receive no points. Your program must compile cleanly (i.e., no warnings) and execute properly on the Bellagio server for credit. In CS 135 there are some programs where warnings cannot be avoided while compiling programs. However, there won't be many. Excessive warnings are an indication that your program has problems.
It is better to submit a partially correct program that compiles than no program at all.
Submit the program file(s) electronically using the procedure shown in the assignment. You may submit your program file(s) as many times as you want before the deadline. Each submission will replace any earlier submission. I can only see and grade your most recent submission. Be careful to submit the correct file. You will not get credit for your work if you accidentally submit the wrong file. Be sure to submit all required files with each submission. You cannot submit any work after the deadline has expired.
Did you limit your code to C++ commands that were presented in and before the current chapter of the text, labs, or lectures?
Did you limit your use of the 'break' command to switch structures only?
Did you use the 'continue' statement? (hopefully not)
Did you use the 'goto' statement? (hopefully not)
Did you use the 'exit' statement? (hopefully not)
Does your code have a properly completed header comment?
Did you cite any sources of code that wasn't your own in the comments?
Did you include the names of anyone who helped you, besides your instructor in the comments?
Did you add comments to your code that describe why the code was included in your program?
Did you remember to indent each new code block using 4-spaces?
Did you make sure there are no TAB characters in your code?
Do all your blocks have curly braces around them regardless of the number of lines of code in the block?
Did you use descriptive names for variables using naming standards discussed in class?
Did you make sure you don't have any global variables?
Did you reduce the scope of your variables so that they are only visable in the scope where they are used?
Are each of the variables declared on their own line?
Did you declare your variables at the beginning of the block of code in which they're used?
Did you provide a comment for each variable that describes its use?
Do you have more than one statement on a single line?
Did you make sure not to use continue, goto, break (unless it's in a switch structure)?
Did you make sure not to use exit?
Did you limit your lines of code to 80 characters?
Did you disable or delete any code that you used to debug your program?
Did you use descriptive names for functions using naming standards discussed in class.
Did you place a function documentation header above each function implementation that included the purpose, parameters, what value returning functions were retruning? (Note: large projects need the comments above the function prototypes in the interface files.)
Are your functions small and do they perform a single basic task?
Do your value returning functions have only one return statement and is it at the end of the function.
Is your program correctly named?
Does your program compile on the Bellagio Server with no warnings?
Does your program run exactly as specified?
Does your program exactly match the sample output provided in the assignment?
Did you use the correct Linux command with the correct options and arguments to submit your program?
|Program Specifications / Correctness||40 pts
|CPPLint, Adherence to style guide and Readability||20 pts
|PCLint, Adherence to program limitations, and Efficiency||20 pts
|Documentation (commenting code)||10 pts
|Extra Credit||10 points
First to report two or more significant errors in the assignment narritive.
First to report an error in the assignment narritive.
|Total Points: 100 pts|
|Documentation: Failing to document your code can result in a 0 for the assignment.|
|Use of the following commands can result in a 0 for the assignment: 'exit', 'continue', 'goto', and 'break'
(the use of 'break' is allowed only in a switch structure.)
This is the most important criterion. A program must meet its specifications (whether from a textbook problem or as written in the assignment) and function correctly. This means that it behaves as desired, producing the correct output, for a variety of inputs. This criterion includes the need to meet specifications by writing a program in a particular way or using a particular language feature, when pecified in the assignment.
If a specification is ambiguous or unclear, you have two choices: You can either make a reasonable assumption about what is required, based on what makes the most sense to you, or you can ask the instructor. If you make an assumption about an ambiguous specification, you should mention that somewhere in a comment so that the reader/grader knows what you were thinking. However, points may be taken off for poor assumptions,
In short: The program is correctly named, implements the input specifications, has the specified features and function blocks, implements the output specifications (matches the sample interaction), and stays within the limitations of the assignment. Code must compile and run to get any credit. Code must not have excessive warnings.
The Linux utility, cpplint, produces no errors.
Code needs to be readable to both you and a knowledgeable third party and follow the course style guide. Which includes but is not limited to:
Indenting code correctly
No TAB characters were present in source code or output.
Adding whitespace (blank lines, spaces) where appropriate to help separate distinct parts of the code (e.g.., space after commas in lists, blank lines between functions or between blocks of related lines within functions, etc.)
Giving variables meaningful names. Variables named a, b, and c or foo, bar, and baz give the reader no information whatsoever about their purpose or what information they may hold. Names like principal, maximum, and counter are much more useful. Loop variables are a common exception to this idea, and loop variables named i, j, etc. are okay.
The code should be well organized. Once we have learned about functions, code should be organized into functions so that blocks of code that need to be reused are contained within functions to enable that, and functions should have meaningful names. This is a concept that we will be learning about as we write more code, and so few points, if any, will be taken off for organization issues that we have not yet addressed.
A lack of indentation in your code could result in a zero grade.
In short: The Linux cpplint command produced no errors. The program does not use TAB characters in source code or output. Code is indented properly using spaces. Line spaces are used to avoid code crowding. No spaces at the end of the lines of code. There is a final line space at the end of the program. No line of code has multiple variable declarations. No line of code uses multiple assignment. A lack of indentation can result in a zero grade.
There are often many ways to write a program that meets a particular specification, and several of them are often poor choices. Although you are not expected to write programs that are stellar in terms of efficiency, you are expected to implement the methods discussed in your text. Poor coding choices are indicated by many more lines of code (and thus your effort and time) than needed, or taking much more of the computer's time to execute than needed. For example, a certain section of code can be executed ten times by copying and pasting it ten times in a row rather than putting it in a simple for loop. The latter is far superior and greatly preferred because it is easier to write and maintain.
However, trying to make your code more efficient, does not give you license to implement advanced commands. Keep your attempts to code more efficiently to using commands that have been covered in the labs, lectures, or chapters covered at the moment.
Documentation standards can be found at https://dbrodersen.net/comments.
Every file containing code should start with a header comment:
At the very least, this header should contain the information above. Other details you might include are a more detailed description of the approach used in the code if it is complex or may be misunderstood, or references to resources that you used to help you write it.
Comments should describe the purpose or intent of the code. All code should also be well-commented. This requires striking a balance between commenting everything, which adds a great deal of unneeded noise to the code, and commenting nothing, in which case the reader of the code (or you, when you come back to it later) has nothing to help with understanding the more complex or less obvious sections of code. Like code organization, appropriate commenting is also something we will be learning about as we write code throughout the semester, so while corrections may be made costing a point or two, more points will be taken off for things that have been noted in class already.
From time-to-time I may ask you to heavily comment your code as part of the assignment. In those cases, you should include more comments than usual that describe why the code is needed to meet assignment specifications.
In short: The program has a header comment at the top of the source code file that strictly adheres to the syllabus standard. All variables have comments describing their purpose. Each formula has a comment describing its purpose. Functions have a function header comment just before the function signature. Comments adhere to the style guide.
Even for authors who have published material, it is virtually impossible to produce a document that is 100% error free. From time to time, students find an error in an assignment that, in some cases, foster confusion. I think that faithfully reporting an error should be rewarded for two reasons: 1. they took the time to carefully read the assignment and ask for clarification, and 2. they were willing to share their findings so that others could benefit.
Students who are the first to find and report a significant error or omission will receive 5 extra credit points. Students who are the first to find and report their second significant error or omission will receive an additional 5 extra credit points.