Students develop programming skills that serve as a foundation for further study in computer science. They learn object-oriented programming and design software that models real-world systems from our networked world and gain an appreciation for the role of algorithms and data structures in problem-solving and software design (e.g., objected-oriented design, lists, files, searching, and sorting). Elementary numerical methods and the construction of a simple graphical user interface (GUI) are also discussed. AU Core Integrative Requirement: Quantitative Literacy II. Usually Offered: fall and spring. Prerequisite: CSC-148 and completion of Quantitative Literacy I requirement.
In this class, you will learn about:
AU Core Quantitative Literacy II (Q2) Outcomes:
Readings should be completed before each lecture.
Date | Topic | Reading | Deadlines | ||
---|---|---|---|---|---|
Week 1 | |||||
Jan 19 | Introduction | 1 | |||
Jan 22 | Elementary Programming | 2 | |||
Week 2 | |||||
Jan 26 | Selections | 3 | |||
Jan 29 | Mathematical functions, Characters, and Strings | 4 | Project 1 | ||
Week 3 | |||||
Feb 2 | Loops | 5 | |||
Feb 5 | Methods | 6 | |||
Week 4 | |||||
Feb 9 | Single-Dimensional Arrays | 7 | |||
Feb 12 | Multidimensional Arrays | 8 | |||
Week 5 | |||||
Feb 16 | Midterm Exam 1 | ||||
Feb 19 | Objects and Classes | 9 | Project 2 | ||
Week 6 | |||||
Feb 23 | Thinking in Objects | 10 | |||
Feb 26 | Inheritance and Polymorphism | 11 | |||
Week 7 | |||||
Mar 2 | Exception Handling and Text I/O | 12 | |||
Mar 5 | Abstract Classes and Interfaces | 13 | Project 3 | ||
Week 8 | |||||
Mar 9 | Wellness Week - Recursion | 18 | |||
Mar 12 | Wellness Week - Developing Efficient Algorithms | 22 | |||
Week 9 | |||||
Mar 16 | Developing Efficient Algorithms | 22 | |||
Mar 19 | Sorting | 23 | |||
Week 10 | |||||
Mar 23 | Sorting II | Review | |||
Mar 26 | JavaFX I | 14 | Project 4 | ||
Week 11 | |||||
Mar 30 | JavaFX II | 15 | |||
Apr 2 | Midterm Exam II | ||||
Week 12 | |||||
Apr 6 | JavaFX III | 16 | |||
Apr 9 | Generics | 19 | Project 5 | ||
Week 13 | |||||
Apr 13 | Lists, Stacks, Queues | 20 | |||
Apr 16 | Sets and Maps | 21 | |||
Week 14 | |||||
Apr 20 | Binary Search Trees | 25 | |||
Apr 23 | Hashing | 27 | Project 6 | ||
Week 15 | |||||
May 4 | Administered Online | Final Exam | |||
Note: In this course, we do not use the Pearson MyLab Programming Software. There are many editions of the required text that include this software in the price. Wherever you get the text, make sure that you are not paying extra for things that you will not use. New for this course is the option to buy a loose-leaf version of the textbook at a reduced price. If you go this route, you will need to obtain a fairly large binder in which to store the pages of this hefty tome. Also, ensure that you are purchasing the comprehensive edition. Previous editions may be used, though there are differences in the language over time that may trip you up. Whatever numbered edition you obtain for this course, ensure that you are using the Comprehensive Edition.
Component | Weight |
---|---|
Attendance and Participation | 10% |
HW Projects | 30% |
Midterm Exams (2x 15 ea.) | 30% |
Final Exam (cumulative: half old, half new) | 30% |
It is expected that students will come to class, be prepared by doing the readings, and will pay attention and participate in discussions. Participation is scored by evaluation of in-class activities and your responses to in-class quizzes.
Any questions regarding general rules and regulations should first be directed to the American University Catalog. If you still have questions, please seek out the TA or Instructor during the posted office hours.
If you have a laptop, you should bring it to class. Throughout the semester we will frequently pause lecture to work together to solve programming challenges in groups. However, it is recommended that you take notes on paper.
Educational research shows that taking notes by hand on paper will lead to better retention of material than taking notes by typing. Also, in the past classrooms have had issues with students not only not paying attention but also disrupting others during class-- by playing games, by accidentally clicking on a video with the sound on, etc.
Please do not use your cell phone in class.
Homework will be graded on a rubric of tasks that are expected to work correctly (e.g., returning the correct output for a given input). For each task, you will receive either a check plus, check, or check minus. Most tasks will receive a check. A check plus means "you impressed me", and is typically achieved by checking for faulty input, elegant design, good comments, and/or a surprising approach. A check minus means the assignment is incomplete, incorrect, or sloppy in some way. Pluses and minuses are combined to give your grade for the assignment. A project receiving all check pluses will receive 100% of credit, while a project receiving all checks will receive a 90%. A project receiving minuses for all tasks will receive about 75% of credit, and a project that receives an X for all tasks will receive about 50% of credit or less. Tasks may be weighted differently to account for differences in difficulty or time. These are general guidelines to let you know what to expect. Grading on specific assignments may differ.
Project submissions that fail to compile will not be accepted under any circumstances.
All assignments will be submitted through the class Github system, which will be introduced in early lectures. Students are allowed to work in pairs (no groups larger than two people) but you must specify who you worked with and it must be clear that both students contributed (you will identify who did what in your submission). Students working together must equally contribute to the projects. Project submissions will be reviewed to ensure balanced contribution for paired submissions - grades will be scaled in situations where it becomes clear that one student did all the work.
Assignments are due at exactly 8pm on the specified date unless stated otherwise. There is an automatic "grace period" until midnight on the due date to account for any technology issues during remote learning. Assignments turned in after midnight will be penalized with a letter grade (10%) for each 24 hour period after the initial 8pm deadline. Submissions received 72 hours after the deadline will not be accepted. Submissions that do not compile will not be accepted. Projects are larger than the homework assigned in the previous course, and students are given multiple weeks to complete them. Waiting until the last minute is a recipe for disaster - if you are stuck early, come to office hours for the instructor or TA ASAP to get unstuck!
Throughout the semester you have two "grace" days that can be used to mitigate the penalty of a late assignment submission. These are applied automatically.
Even though we encourage collaboration with a partner, sharing code between groups is strictly forbidden - this is a form of plagiarism. As is showing your work to other students, even just for a second. There is rarely one single correct way to write code that solves a problem. While we want you to feel free to discuss your approach freely with a partner, you should know that there are often many solutions for a given problem and it's typically obvious when one student shares code with another. If you directly copy and paste code from the Internet (or even the text), cite your source in your comments (but also ensure that you understand what the code is doing - not all code on the web is good!). Assignments will be checked using plagiarism detection software and by hand to ensure the originality of the work.
Do not share your code with anyone other than a partner. Do not let someone look at your screen. You may get behind, or your friend may ask for help, but the consequences for plagiarism are far worse than an incomplete submission - for the submission, you will still likely get some points. If I suspect that you have purposely shared code with another student or presented someone else's work as your own, the matter will be referred to the Academic Integrity Code Administrator for adjudication. If you are found responsible for an academic integrity violation, sanctions can include a failing grade for the course, suspension for one or more academic terms, dismissal from the university, or other measures as deemed appropriate by the Dean.
All students are expected to adhere to the American University Honor Code. If you have a question about whether or not something is permissible, ask the instructor or the TA first.
Students are required to attend all lectures. If you need to miss class for any reason, you are allowed two excused absences - no questions asked. Prolonged absences must be discussed with the instructor and are not guaranteed to be excused. If you cannot attend lectures regularly, due to work or other obligations during remote learning, then please reach out to the instructor so that I know about it - lectures will be recorded for your review later and I am willing to count your "attendance" through some other means (typically by answering a small 1-2 question quiz about the lecture material).
Exams cover the material from the lectures, projects, and reading. While not necessarily cumulative, each exam will require understanding many of the concepts covered in the preceding exams. Exams consist of multiple choice, short answer, and long answer questions. Each exam, except the final, is weighted equally.
The final exam is cumulative: half of the final exam will be material covered for prior exams, half will be material that is new since the previous exam.
Range | Letter |
---|---|
>=93 | A |
>=90 | A- |
>=87 | B+ |
>=83 | B |
>=80 | B- |
>=77 | C+ |
>=73 | C |
>=70 | C- |
>=60 | D |
<60 | F |
In this course you will utilize an Integrated Development Environments (IDEs) to write code. While many IDEs exist, examples and in-class support videos will utilize IntelliJ IDEA by JetBrains (https://www.jetbrains.com/idea/). It is freely available to students through an academic license and supports all of the software development features that we will use in this course. Students who have used PyCharm, also by JetBrains, will find this IDE quite familiar.
If you wish to receive accommodations for a disability, please notify me with a letter from the Academic Support and Access Center. As accommodations are not retroactive, timely notification at the beginning of the semester, if possible, is strongly recommended. To register with a disability or for questions about disability accommodations, contact the Academic Support and Access Center at 202-885-3360 or asac@american.edu, or drop by the ASAC in MGC 243.
All students may take advantage of the Academic Support and Access Center (ASAC) for individual academic skills counseling, workshops, Tutoring, peer tutor referrals, and Supplemental Instruction. The ASAC is located in Mary Graydon Center 243. Additional academic support resources available at AU include the Bender Library, the Writing Center (located in the Library), the Math Lab (located in Don Meyers Technology and Innovation Building), and the Center for Language Exploration, Acquisition, & Research (CLEAR) in Anderson Hall. A more complete list of campus-wide resources is available in the ASAC.
The Quantitative Academic Support program provides drop-in and one-on-one tutoring for CSC 121, 148, and 208. Tutors help students learn course concepts, develop study strategies, complete assignments, and study for exams. Tutors may not be able to help with all problems; students must consult with the course instructor for additional assistance.
Drop-in assistance is available in DMTI 207 (hours TBD). One-on-one appointments can be scheduled at american.mywconline.net (choose Quant Support). Tutoring begins the third week of classes and ends the last day of classes. Email quantsupport@american.edu with questions.