This course builds on skills acquired in CSCI 150, placing emphasis on object-oriented software design and data abstraction. Students are introduced to data structures (lists, stacks, queues, trees, heaps, hash tables, graphs) and programming techniques such as recursion and sorting algorithms. Other topics include analysis of algorithm complexity, automated unit testing, and inheritance. Programming assignments focus on the design and implementation of algorithms and data structures using the Java language.
Upon completing this course, our goal is for you to be able to:
- Build substantial computer programs with graphical user interfaces to effectively solve realistic problems.
- Understand and implement fundamental data structures to manage complexity.
- Explain the compromises necessary to develop efficient programs.
- Use and justify appropriate programming algorithms for specific tasks.
- Decouple problem specification from program implementation through abstraction.
- Employ test-driven and empirical methods to understand the behavior of a program.
- Discuss the ways programming languages employ distinct features to solve problems.
- Develop an aptitude and skills for independent learning.
Peer Tutoring
Sun |
Mon |
Tue |
Wed |
Thur |
Ted 6-8 |
Ryan 6-8 |
Ryan 6-9 |
|
|
When we write code together in class, it will be posted here!
Coursework
[Adapted from Spencer Bagley and David Clark, via Robert
Talbert]
CSCI 151 uses a real-world policy on due dates—but this may not
mean what you think! In the real real world, due dates exist but
they are often not ironclad. Assignments have due dates to help you
make progress in the course and solidify your knowledge before moving on
to something new. Your life and schedule may not perfectly coincide
with the due dates I have chosen. If you need more time to
get the job done well, you email whoever set the deadline to ask if
you can have more time. Studies have shown that deadline extension
requests—in moderation and when truly needed—often lead to
better employee evaluations (not to mention better work). [See Go
Ahead and Ask for More Time on that
Deadline
by Ashley Williams.]
If you need an extension on a due date, email me and explain what
you need, and it will probably be fine. It helps if you propose a
concrete new deadline (e.g. “I can get it done by 5pm on
Wednesday”). If you ask for lots of extensions, we’ll work together
to find a way to help you keep up. Note, however, that late
submissions may not receive feedback as quickly as on-time
submissions.
If you have significant extenuating circumstances that cause you to
miss multiple deadlines, please come to office
hours to discuss broader accommodations. I’m
happy to be flexible, but it helps to know what you need so I can
figure out the best way to help.
Important: You must be in communication with me anytime an assignment is late.
If you would like to improve an assignment after it has been graded and improve your grade, you may revise and resubmit the assignment until you do. This must be within two weeks of receiving feedback. If you need more than two weeks, you must schedule a meeting with me to discuss your reasons for the delay.
Important: All work and revisions must be completed the day of the final exam period for this course at 5pm.
Much of your experience with programming in this course will be through weekly labs. Each lab will be assigned in lab with time allotted to work through the materials, and will be due by the start of the following lab.
On these labs, you will work with a partner on the lab assignments. Their name must be listed on any code you hand in as joint work. A partnership should only turn in a single copy of the assignment. If students working as partners wish to turn in a lab late, all students must use a late day.
Important: Lab attendance is required. We will be
stationed in the Snoddy Computer Lab in the library for our lab times.
There will often be short homework assignments to be completed individually, due in one week. These will be practice to
help you solidify the concepts from class before labs and projects.
Warning: You must work individually on the homeworks. You may discuss concepts and ideas with your classmates, but the code or work you turn in must be your own. Use of any resources (TA, Stackoverflow, ChatGPT, etc) must be cited, and an overreliance on those resources can be counterproductive to developing your own ability to make progress in this and other courses.
You will have three skills projects in this course, one about every four weeks. These projects will cover concepts we have discussed in class and in labs, and will be due approximately two weeks after they are assigned.
You will be graded not only on correctness, but also technique, documentation and evaluation of your solution. Further details on the grading standards and handin instructions for each project will be given when they are assigned.
Warning: You must work individually on the projects. You may discuss concepts and ideas with your classmates, but the code or work you turn in must be your own. Use of any resources (TA, Stackoverflow, ChatGPT, etc) must be cited, and an overreliance on those resources can be counterproductive to developing your own ability to make progress in this and other courses.
Three times throughout the semester, you are expected to
make an office hours appointment and discuss your progress in the course. This will include conversation and feedback about your current progress and understanding.
Ideally, these checkins should be scheduled during the weeks shown
on the course calendar.
Attending class and being an active participant in the class community
is one of the most important contributors to your learning at Hendrix.
Attendance is especially important in this class since you will often engage in group learning activities. Active participation is expected in order to achieve higher grade levels in the course.
If you know that you will be absent, please email me so that we can find accomodations. If there is an emergency, please get in touch with me as soon as is possible once the emergency is resolved. I trust you to be honest with me about your reasons for the absence (I do not need details), and honest with yourself about if you truly need to be absent. If you do not communicate with me about your absence, it will be unexcused.
Each assignment is assessed as Complete, Partially Complete or Missing. Criteria for the first two categories will be specified for each assignment. Final course grades are earned based on cumulative assignment outcomes:
A Level Work
- Complete all 3 Skills projects
- Complete the Final Project
- Complete 11 of 12 Labs + 1 Partially Complete
- Complete 9 of 10 Homeworks
- Complete three office hours checkins
- Abundant Participation in Classroom Activities (no unexcused absences)
B Level Work
- Complete all 3 Skills Projects
- One of these two options:
- Option 1:
- Partially Complete the Final Project
- Complete 11 of 12 Labs + 1 Partially Complete
- Complete 9 of 10 Homeworks
- Option 2:
- Complete the Final Project
- Complete 10 of 12 Labs + 1 Partially Complete
- Complete 8 of 10 Homeworks
- Complete two office hours checkins
- Active Participation in Classroom Activities (at most one unexcused absence)
C Level Work
- Complete 2 of 3 Skills projects + 1 Partially Complete
- One of these three options:
- Option 1:
- Complete 11 of 12 Labs + 1 Partially Complete
- Complete 9 of 10 Homeworks
- Option 2:
- Partially Complete the Final Project
- Complete 10 of 12 Labs + 1 Partially Complete
- Complete 8 of 10 Homeworks
- Option 3:
- Complete the Final Project
- Complete 8 of 12 labs + 1 Partially Complete
- Complete 6 of 10 Homeworks
- Complete one office hours checkin
- Participation in Classroom Activities (at most three unexcused absences)
D Level Work
- Complete 6 of 12 Labs + 3 Partially Complete
- Complete 5 of 10 Homeworks
- Complete 1 of 3 Skills projects + 2 Partially Complete
Commitments
It is my ultimate goal for this course, and my teaching, to
develop your academic skills, advance your learning
of computer science concepts, and support the liberal arts in general. To do so
will require commitments from myself and from you toward meeting this goal.
Active Participation
I will be prepared and on time for class each day, ready to use class time
to help you understand the course material. I will respectfully listen to,
understand, and answer questions asked in class.
You are expected to attend class and actively participate in discussions every day,
answering questions, asking questions, presenting material, etc. Your
participation will be respectful of your classmates, both of their
opinions and of their current point in their educational journey, as we
each approach the material with different backgrounds and contexts.
Constructive Feedback
I will keep office hours and be available for outside appointments, and respond
to emails within one business day (not including weekends).
I will provide feedback on group presentations within one day. For exams, projects,
and homeworks, I will provide graded feedback within two weeks.
You are encouraged to provide constructive comments for improving this
course for furthering your learning throughout the semester.
There will be an opportunity for
anonymous course feedback
at the end of the term, in which I hope you all participate. Through your
feedback I can improve this course and others for future students.
Academic Integrity
I will abide by the above syllabus and grade your work fairly.
As stated in the Hendrix Academic
Integrity Policy, all students have agreed to adhere to the following principles:
- All students have an equal right to their opinions and to receive constructive criticism.
- Students should positively engage the course material and encourage their classmates to do the same.
- No students should gain an unfair advantage or violate their peers' commitment to honest work and genuine effort. It follows that any work that a student submits for class will be that student's own work. The amount of cooperation undertaken with other students, the consistency and accuracy of work, and the test-taking procedure should adhere to those guidelines that the instructor provides.
- Members of the Hendrix community value and uphold academic integrity because we recognize that scholarly pursuits are aimed at increasing the shared body of knowledge and that the full disclosure of sources is the most effective way to ensure accountability to both ourselves and our colleagues.
More details of our departmental stance on integrity can be found in the
Hendrix
Computer Science Academic Integrity Policy
Learning Accomodation
I will make this classroom an open and inclusive environment,
accommodating many different learning styles and perspectives.
Any student
seeking accommodation in relation to a recognized disability should inform me
at the beginning of the course.
It is the policy of Hendrix College to accommodate students with disabilities, pursuant
to federal and state law. Students should contact Julie Brown in the
Office of Academic
Success (505.2954; brownj@hendrix.edu) to begin the accommodation process.
Physical and Mental Health
I am willing to work with you individually when life goes off the rails.
Coursework and college in general can become stressful and overwhelming, and
your wellness can be impacted when you least expect it. You should
participate in self-care and preventative measures, and be willing to
find support when you need it.
- The Office of Counseling Services
welcomes all students to see a counselor
in a private and safe environment regardless of their reasons for making an
appointment. Counseling services are available to all Hendrix students
at no cost.
- Student Health Services
provides free healthcare to Hendrix students. Services are provided by an
Advanced Practice Registered Nurse (APRN) in collaboration with a local physician.
The Offices of Counseling Services and Student Health Services are located in the white house
behind the Mills Center for Social Sciences at
1541 Washington Avenue.