General Course Info


  • Instructor:
    Roberto Corizzo[rcorizzo@american.edu]
  • First Class:
    01/19/2021
  • Location:
    Online
  • Office Hours:
    Schedule a time to meet with me through Acuity

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:

Software Development Fundamentals
To be able to design and implement a Java program to model a real-world system, and subsequently analyze its behavior.
Programming Languages
To know and use basic Java programming constructs for object-oriented problem solving (e.g., classes, polymorphism, inheritance, interfaces).
Algorithms and Complexity
To appreciate the role of algorithms and data structures in problem solving and software design (e.g., objected-oriented design, lists, files, searching and sorting)
Software Engineering
To develop programming skills that can serve as a foundation for further study in computer science.
Social Issues and Professional Practice
Social implications of computing in a networked world and the impact of social media on individualism, collectivism and culture.

AU Core Quantitative Literacy II (Q2) Outcomes:

  1. Translate real-world questions or intellectual inquiries into quantitative frameworks.
  2. Select and apply appropriate quantitative methods or reasoning.
  3. Draw appropriate insights from the application of a quantitative framework.
  4. Explain quantitative reasoning and insights using appropriate forms of representation so that others could replicate the findings.

Course Schedule

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

Syllabus

Required Textbook

Title: Introduction to Java Programming and Data Structures, Comprehensive 12th Ed.
Author: Y. Daniel Liang
Link: Pearson, Amazon

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.

Grading

Component Weight
Attendance and Participation 10%
HW Projects 30%
Midterm Exams (2x 15 ea.) 30%
Final Exam (cumulative: half old, half new) 30%

Class Participation

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.

Use of Computers and Cell Phones in Class

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 Projects

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.

Late Submission

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.

Academic Integrity

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.

Attendance

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

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.

Letter Grades

Range Letter
>=93 A
>=90 A-
>=87 B+
>=83 B
>=80 B-
>=77 C+
>=73 C
>=70 C-
>=60 D
<60 F

Software Tools

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.

Students with Disabilities

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.

Academic Support

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.

Tutoring

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.

Acknowledgments

Course design by Alex Godwin at American University. Assignments and ideas on this syllabus build from the work of many other instructors in computing, especially Donna Dietz and Adam Knapp at American University, John Stasko at the Georgia Institute of Technology, and Dave Reed at Creighton University. This course utilizes in-class POGIL materials that builds on the work of Clif Kussmaul at Muhlenberg College and Tammy VanDeGrift at the University of Portland.