CS 112 -- Introduction to CS II (in Java) -- Summer II, 2020

 

Prerequisites

CS 111 or programming proficiency in some language, plus an interest in working hard to develop your skills as programmers!

Course Description

This course will introduce you to advanced programming techniques in Java. It has five goals :

  1. Introduce you to programming in the Java platform, and reinforce concepts (such as recursion) introduced in CS 111. We will also continue to develop your ability to plan, write, and debug programs which satisfy a specification, and which can be understood easily (and maintained) by humans.
  2. Provide you with a "cookbook" of the most important data structures used in advanced programming;
  3. Introduce you to the study of algorithms, both as they relate to the data structures being considered, and as a separate object of study;
  4. Take the first steps in developing your ability to analyze the efficiency (running time) of algorithms, from two (increasingly less abstract) points of view:
  5. Introduce you to the "science" of computing -- how do computer scientists think?

The overall goal is to provide you with a firm foundation for further study in computer science.

 

Course Materials and Handouts

We have no single textbook for the class; instead we will use various online resources and I will provide my Powerpoint slides as PDF files on the web site. In most cases, you will have something to read, or view, before the lecture.

However, for the first 2-3 weeks of the course, where we will be learning Java, I suggest using the following website, which contains tutorial lessons, with executable code snippets (linked from the class web site):

Learning Java Online

In addition one of the following two texts is suggested as a resource for learning Java if the course lecture slides are not sufficient:

The first is a classic and concise introduction to the language:

Java in a Nutshell, by Evans and Flanagan.

Author:
Benjamin J Evans, David Flanagan
ISBN:
9781449370824
Publication Date:
07/22/2014
Publisher:
O'Reilly Media, Incorporated

You may order this from Amazon (I recommend getting the Kindle version and the Amazon Cloud Reader) or find previous editions online (the parts we use will be unchanged in the various editions). I will be referencing both of these resources as we go through the first week of the course.

The second is a beautiful online textbook of Java, which contains much more explanation and examples than the first suggestion. Use whichever one suits you! Here is the link:

Introduction to Programming Using Java, Seventh Edition, by David Eck.

Finally, a third resource is the following online tutorial in Java:

LearningJavaOnline

You do not need to look at all three of these, but choose whichever one suits you, just refer to the lecture slides, or find additional resources (say, YouTube videos)!

Other reference material will be provided on the web site, and anything else may be found using Google (your best friend when programming in Java!).

Topics

A detailed week-by-week roadmap, keyed to readings, handouts, and assignments, will be maintained on the course web page.

Policies

Lectures

Homework Assignments

Tests

Grades

ALSO: In order to receive a passing grade of C towards the concentration (or for transfer credit), you must achieve a passing grade in both the homeworks (at least 50% of assignments) and tests (at least 50% on the final).

These percentages are tentative and may be changed at my discretion at any time.

I will drop the lowest homework assignment on which you achieved at least 50% of the points. Therefore, you should attempt all homeworks: if you simply do not hand in a homework, you will receive a 0.

Miscellaneous

Policy on Academic Conduct

Collaboration Policy

Collaboration policy for this class is as follows. The last point is particularly important: if you don't make an honest effort on the homework but always get ideas from others, your exam score will reflect it.

Violations of Collaboration Policy

Violations of collaboration policy fall into two categories: ones that are acknowledged at the time they occur (for example, in clearly marked comments in your code) and ones that are unacknowledged. Acknowledged violations (e.g., using someone else's code for a method you didn't know how to write yourself, and stating clearly in your code that this is not your own work) will result in an appropriate reduction in the grade, but will not be considered cheating.

Unacknowledged violations of the collaboration policy--for example, not stating the names of your collaborators, or any other attempt to represent the work of another as your own--will result in an automatic failing grade and will be reported to the Academic Conduct Committee (ACC). The ACC often suspends or expels students deemed guilty of plagiarism or other forms of cheating. I have served on the ACC and have seen it happen. I will assume that you understand the CAS Academic Conduct Code (read it if you haven't).

If you are uncertain as to whether a particular kind of interaction with someone else constitutes illegal collaboration or academic dishonesty, please ask me before taking any action that might violate the rules; if you can't reach me in time, then at the very least include a clear explanation of what happened in your homework write-up to avoid being treated as a cheater. Citing your sources is usually the easiest way out of trouble.

BU HUB Learning Outcomes

This class satisfies Quantitative Reasoning II. This course follows CS 111 (which satisfies QR I) and is the second course in the CS majors. It develops a serious level of analytical and programming skill in quantative and computational reasoning. Students will demonstrate their conceptual and theoretical understanding of advanced numberical and symbolic algorithms, and display their results through text and visual outputs. They will interprete a variety of quantitative and computational models of computing devices and algorithms, such as flowcharts and pseudo-code for algorithms, and schematic diagrams of data structures and components of computer systems. They will recognize the limitations of computers and algorithmic techniques and understand the risks of using these extremely complicated programs to perform essential tasks in our culture.