Syllabus for Cosi 12b

InstructorPito Salas
ClassMon, Wed, Thur 12:00pm to 12:50p,
Mandatory recitationMon 6:30pm to 9:20pm
Office Hourshttps://calendly.com/pitosalas/ftf
PrerequisitesCosi 11a
HomeworkWeekly reading and programming assignments. Success in this 4 credit hour course is based on the expectation that students will spend a minimum of 9 hours of study time per week on homework and in preparation for class
Grading0-100 based. See below.
Email contactpitosalas@brandeis.edu
OfficeVolen 134

Introduction

Knowing how to program is a poweful thing. Nowadays software has an important role in just about any discipline, from Physics to Robotics, from Medicine to Computer Science.

For me, learning to program is learning a new medium. Like writing or mathematics, programming is a creative, rewarding and powerful tool that is also amazingly fun! I believe that deeply and I hope to have you discover that for yourself.

Therefore my overall goal for this course for you is to continue the journey to being a brave and confident software developer. To be inquisitive and self-reliant, comfortable in taking on new challenges.

Content and Objectives

This course continues Cosi 11a, and in particular:

  1. Java concepts and practices: Students will build on their learning and understanding of Java as a programming language; be introduced and comfortable with the wide variety of java libraries and tools used by professional programmers; cover issues related to the definition, creation and use of classes, objects and methods. We will discuss the principles of inheritance and polymorphism and demonstrate through problem analysis assignments how they relate to the design of methods, abstract classes and interfaces. We will cover the basics of creating APIs as well as allow students to explore the Java Abstract Programming Interface (API) and Java Collection Framework through programming assignments.
  2. Object Orientation: Upon completion of this class, students will be able to understand the concept of object-oriented programming (OOP) as well as the purpose and use of inheritance, polymorphism, encapsulation and method overloading. They will be able to create Java application programs using sound OOP practices (e.g., interfaces and APIs) and proper program structuring. They will also learn the new features of Java 8 such as streams and lambdas.
  3. Program design and development: Students will get a lot of practice programming and designing programs built up of multiple classes; decomposing a problem statement and breaking it into steps that can be programmed; understanding what of all the capabilities available can be used to solve the problem.
  4. Software Development as a discipline: Students will begin seeing “Software Development” as something beyond programming, encompassing design, development tools, libraries, debugging and testing and other processes. They will learn good programming skills as we discuss key issues in the design of object-oriented software, including programming design patterns and unit testing.

Class and Recitations

  • Class will be in 3 50 minute sessions on Mon, Wed and Thur. In class there are often tiny pass/fail quizes, as well as reading assignments.
  • Recitation is once a week for 120 minutes, and is mandatory. This is when you will learn about the weekly Programming Assignment and get tips to help you through it.

Prerequisites and preparation

Cosi11a is required for admission to this course. If you have not taken Cosi11a, then you require permission from the instructor (me!)

Expecations for all students enrolling in Cosi11a

If you have met the pre-requisites or have been given permission to take this course, we expect that you have are comfortable (not an expert) with the following specific areas of programming:

  • Basics: Compiling and running Java programs from the command line, Structure of a java source file, including a static void main, commenting of code, proper indentation, valid variable, class, file and other names
  • Data types: Short, int, long, double, boolean, char and their associated literal formats.
  • Basics of classes: Class declarations, constructor, “new” operator, method declarations
  • Variables: local variables in methods, scoping, static class variables, method parameters, and how they are “bound” when method is called, 1-d Arrays, 2-d arrays (arrays of arrays), Arrays containing Strings, primitive and reference types, formal and actual parameters
  • Expressions: assignment statements, arithmetic expressions, precedence, unary operators, ternary operator
  • Flow control: if, while, for, switch, break, continue, do-while, try-catch for simple cases
  • Tracing: Ability to write algorithms that have some logic, ability to trace a nested loop and understand how variables change, ability to trace a recursive method
  • Printing to and reading from console or a file

Grades

The final grades for the course will be determined using the following weights:

Participation (10%)

There will be many homeworks or in class activities which will be graded “participation only.” For these you will receive an automatic 100 if you make a good faith effort, and a zero if you don’t submit. However it will not matter how correct or incorrect your response is! In addition, I expect that you come to class on time and are engaged in the lecture and that you come to the recitiations. That you are respectful of the other students and help creating a positive learning environment. Also that you are responsive to questions and help with discussions and class activities.

Programming: (55%)

There will be programming assignments (“PAs”) roughly every week. Every program will be graded both on correctness and style/design. Other homeworks are due on the day of class, at class time. Submissions up to 24 hours late will be accepted but have a 20 point penalty. More than 24 hours late will not be accepted. Submissions that do not conform to the requested format exactly will not be accepted.

Exams and/or quizes (35%)

There will be a midterm exam and a comprehensive final exam.

NOTE: You have a maximum 3 weeks after a mark has been posted to Latte to call our attention to a possible error, oversight or misunderstanding. That is your responsibility. After that, the mark as recorded in Latte will not be changed.

Homework Submission

Because of the large size of this class, logistics of submitting homework, automatic grading (unit tests and plagiarism checks), 1-1 TA meetings, and final grading, of around 90 people is a real challenge! We do our best to make it convenient and will be flexible if good reasons present themselves. But generally we will be strict about the following!

General Homeworks

Warmup assignments are due at 10am the morning of class and have no grace period. Other non-PA homeworks have a 2 day grace period. However you are deducted 20 points for late submission. After that you will receive zero points.

Cosi12b Programming Assignments.

Submission: For programming assignments (PAs) the late submission policy will be whatever the PA submission page says. In general you will have 24 hours grace, but with a 20 point penalty. After that it will be scored as zero.

Drop One At the end of the semester we will not count your lowest PA grade from the calculation, whether you got a zero for it, missed it altogether or whatever. This will happen automatically.

The PA itself is graded as follows: 70% of the score is based on the automated unit tests. There are lots more tests than the ones that are included in the starter file. Don’t assume that because you pass the ones in the starter file you will also pass the rest. Pay attention to edge conditions, the specifics of the problem specification and so on. We are not on a mission to trip you up with bizzarre or convoluted cases. The tests will be appropriate and realistic but will test complete adherence to the spec.

We will also look at your program and assess the quality of the code: the algorithm, structure, design and presentation. Take a look at Good Programming Style for more specifics.

Resubmission: You have the option to resubmit your assignment once you’ve met with your 1-1 TA. The way your initial grade is computed doesn’t change in any way including the 24 hour late submission with penalty. However if after you have your 1-1 you feel strongly that you can make the work a lot better and you want to invest some time you will have the chance to do so.

If you choose to resubmit the resubmitted work will be regraded and your final grade will be the average of your initial and resubmit grade. If you already had an 80 or 90 then the improvement won’t be worth it but if for some reason you had a 50 or 60 it could make a big difference. The window for resubmitting is 1 week after the initial due date.

Additional information

Change Policy

The instructor reserves the right to make changes to this syllabus and the associated curriculum web site if he deems it necessary. Any changes will either be announced in class or through e-mail. All students are responsible for finding out about such changes. Each student must be aware that not all assignments are listed in the syllabus. Students must use their common sense and not look for loopholes in the syllabus because, ultimately, the instructor has the final say in all matters. If you are confused on any assignment, ask the instructor for clarification.

By deciding to stay in this course, you are agreeing to all parts of this syllabus. In fairness to everyone, the syllabus must apply equally to all students without exception.

Textbook

Book: Building Java Programs - A Back to Basics Approach (4th Edition) by Stuart Reges and Marty Stepp, Pearson. We will not follow the book page by page but it makes a useful supplement to the lecture presentations. It contains practice problems and online videos you can use to study for your exams.

Software

The required software for the course is the Java Development Kit (JDK) 8 and the Eclipse editor.

Academic Honesty

Please see our policy on Academic Honesty

Resources For Students
  • A comprehensive set of Powerpoint slides covering each lecture of the class
  • A summary “All of Java” set of slides that goes through the whole landscape
  • The Textbook, Building Java Programs
  • Starting midsemester we will kick off small TA-led study groups
  • Regular (physical and virtual) office hours with all instructors
  • Latte for assignments and submissions
  • The Course web site (this site) with details about how the course operates and Useful links for further study