Course Title: CMSC104 Problem Solving and Computer Programming
Time & Place: Monday & Wednesday, 5:30pm – 6:45pm, ENG 122/122A
Problem Solving and Program Design in C, 6th Edition
Jeri Hanly and Elliot Koffman, Addison Wesley, 2009.
This course is designed to provide an introduction to problem solving and computer programming that does not require prior programming experience. Elementary problem solving skills and algorithm development will be introduced. Students will be taught the basic use of a programming environment and basic programming constructs (including loops, control statements, functions, and arrays). This course also teaches students the fundamentals of using the UNIX operating system, and introduces general computer science concepts. Note: This course does not fulfill any of the computer science major requirements. Students who have taken and received transfer credit for, or who are taking concurrently any computer programming course in a high-level programming language, will not receive credit for CMSC 104. The list of such computer programming courses includes, but is not limited to AP Computer Science, CMSC 201, CMSC 202, and sections of CMSC 291 that cover programming topics.
The following is a list of the topics that will be covered:
- Introduction to Computer Organization and Architecture
- Data Representation and Memory Usage
- Introduction to Operating Systems (Linux)
- Introduction to Software Engineering Using Top-Down Design
- Programming in C
- Problem Solving and Algorithm Development
ObjectivesAfter completion of this course, students will:
- become familiar with the Linux operating system, especially UMBC's Linux environment.
- have a high level understanding of basic computer hardware and software.
- have gained basic programming skills using the C programming language.
Your final grade will be computed from the following components:
The initial schedule has 12 homework assignments listed. So each homework assignment would be worth 2% of your grade. Similarly, 5 quizzes are planned, so each quiz would normally be worth 6% of your final grade. However, if changes are made to the schedule (e.g., due to snow days), homework assignments would still account for 24% of your grade and quizzes 30%. (Each homework or quiz would be worth more.)
There will be at least 16 classwork assignments during the semester. If there are more than 16 classwork assignments, then only the highest 16 grades will count. So, each classwork submitted is worth 1% of your grade.
Your final letter grades will be based on the standard formula:
0 ≤ F < 60, 60 ≤ D < 70, 70 ≤ C < 80, 80 ≤ B < 90, 90 ≤ A ≤ 100
Depending upon the distribution of grades in the class, there may be adjustments in the students' favor, but under no circumstances will the letter grades be lower than in the standard formula. Grades will not be "curved" in the sense that the percentages of A's, B's and C's are not fixed. As a guideline, a student receiving an "A" should be able to produce correct programs for the homework assignments and quizzes with facility.
Grades are given for work done during the semester; incomplete grades will only be given for medical illness or other such dire circumstances.
You are expected to attend all classes. If you miss a class, you are responsible for getting the notes and any verbal information given during class from a fellow classmate. (If handouts were given out, you may come to my office to get them.)
Classwork must be submitted by the end of class. If you miss a class, you cannot make up the classwork. This is a firm policy.
If you do not finish the classwork by the end of class, you should submit whatever you have completed. You have the option of submitting a finished version of your classwork before next class for an improvement in your classwork score of up to 10%. This policy is intended to eliminate any last minute panic at the end of class time. It is not intended to turn classwork into homework. In particular, if you do not submit anything during class, then you cannot take advantage of this policy.
You will not acquire programming skills by watching someone else write programs. You must budget enough time to think about the homework assignments and then write and debug your code.
Programs are graded not just on correctness (producing the correct output) — neatness counts. Here "neatness" means that your program is well formatted (see CMSC104 Coding Standards and CMSC104 Indentation Standards), the output from your program is nicely presented, and that the logic in your program is straightforward.
If you cannot complete a programming assignment, you should still submit your code. Partial credit will be given for reasonable effort. Late work will not be accepted.
Be aware that the GL system may go down from time to time. You are given ample time to complete your programs, so system downtimes are not necessarily an excuse for late submission.
You will be submitting your programs electronically. Details will be explained in class before you need to submit your first program.
Extra CreditThere will be several opportunities to earn extra credit by doing extra homework assignments. Extra credit assignments will be graded in the same manner as regular homework assignments, except:
- Extra credit will only be given to submissions that are mostly correct. For example, in regular homework assignments, you might be given partial credit for a program that doesn't compile. Such programs will not receive extra credit.
- Extra credit applies only to homework and classwork scores and not to quiz and final exam scores. For example, if by doing extra credit you have 110% on homework and classwork, but only managed 80% on the quizzes and final exam, your final grade would be 80% × 60 + 100% × 40 = 88% (and not 80% × 60 + 110% × 40 = 92%).
When you submit your homework and classwork, you are stating that the work was created by your own individual effort, or in the case of a group assignment, created solely by the effort of members of your group.
Receiving help from the Computer Science Help Center does not violate this academic integrity policy.
You may also receive help from other sources. However, this help must be limited to:
- Discussions about the meaning of the assignment.
- Identifying syntax errors in your program.
- Identifying simple logic errors in your program.
The following is a non-exhaustive list of actions that clearly violate this academic integrity policy:
- Someone else is typing code in your program.
- You are cutting and pasting more than a single line of code (from a program that was not distributed by the instructor).
- You are looking at someone else's program while you are typing in your code.
- You receive someone else's program by email, hard copy, text message, instant message, ...
- You make your program available to another student in CMSC104 directly or indirectly by email, hard copy, text message, instant message, ...
This policy recognizes that students can learn productively from many sources including from other students in the class. Thus, this policy allows small amounts of help but prohibits outright copying. Although, this leaves a gray area between "small amounts of help" and "outright copying", it is better that we live with some ambiguity than to have a clear-cut policy that deprives the students of productive learning opportunities. Students who have doubts about the propriety of an activity should consult the instructor.
Students who violate this academic integrity policy will receive a grade of 0 for that assignment. A second violation will also result in a reduction of one full letter grade in the student's final course grade. In the case where one student copies the program of another student, both students are considered to have violated this policy. Here, copying includes not just programs that are verbatim copies, but also programs that are substantially similar and could not have been produced independently. Furthermore, all parties concerned will have their prior homework and programs checked.
Violations of this policy may be reported to the University's Academic Conduct Committee for further action. Egregious cases of cheating will be written up as a "more serious" infraction. In this case, you will not be allowed to drop the course. Also, a "more serious" infraction would appear as a permanent part of your student record and would be seen by potential employers when they ask for an official copy of your transcript.
For a more complete description of academic dishonesty, refer to the UMBC Undergraduate Student Academic Conduct Policy.
In-class quizzes are scheduled for Mondays 3/5, 3/26, 4/9, 4/23 and 5/7. Please make every effort to attend — unexcused absences will result in a grade of zero for that quiz.
Each quiz will be held during the last 30 minutes of the class period. The topics on a quiz will be announced in class — these are not pop quizzes. A typical quiz will have a multiple choice section and also a section that asks you to write a program or program fragment using a language feature that you have used in homework. The best way to study for the quiz is to do your homework and learn from it.
The final exam is the only exam in this class. It is scheduled for Monday May 14, 6:00pm – 8:00pm, in ENG 122/122A.
In order to facilitate email communication, please observe the following guidelines for email sent to the instructor.
- Make sure that the subject line of the email message clearly identifies its content (e.g., mention CMSC104).
- Use your UMBC email account. (I really shouldn't discuss your grade with some random person on the internet just because he has an email address that resembles your name.)
- Use your full real name.
- Submit your program instead of attaching it to your message.