CS-2113: Software Engineering

Course overview, policies



About
Announcements
Modules
Coursework
FAQ


Java API
C CPI

  • Instructor: Prof. Rahul Simha

  • Time/place:
    • Class: Wednesdays, 3.30-6.00pm, Tompkins 405.
    • Lab: (1) Mondays, 9-10.10, SEH-4040; (2) Mondays, 2.10-3.20, SEH-4040.

  • Office Hours: 5-6.30pm Tuesdays, SEH 4560.

  • TAs: Bo Mei, Yawei Wang
    Emails: bomei AT gwu.edu, yawei AT gwmail.gwu.edu

  • TA Office Hours:
    • Tuesdays: 4-5pm in SEH 5520.
    • Fridays: 2-3pm in SEH 4450.

  • Course CRN's: Class (81528), Lab CS2113-30 (81529), Lab CS2113-31 (81530).

  • Prerequisites: CS-1112 or equivalent (See undergraduate curriculum).

  • Course description: In this course, students will learn how to write object-oriented code using Java. Concepts will focus on object-oriented thinking, software composition, inheritance and polymorphism, and design patterns. Programming techniques, assignments and lab exercises will focus on Java, specifically, the language and its core libraries. The course will be conducted lab-style with a mix of lecture, lab assignments and projects. The course will also cover an elementary introduction to the C programming language.

  • Learning outcomes: By the end of this course, students will be able to:
    • Design Java classes for a challenging problem involving multiple classes.
    • Demonstrate skill in problem solving by going from complex word description to implementation.
    • Understand objects: static and dynamic classes, interfaces, abstract classes, inheritance, polymorphism, constructors, Java's object features and syntax, memory representation of objects.
    • Experience programming in C.
    • Understand application development: front-end, back-end, threads, networking.
    • Understand the relationship of language features to static and dynamic memory.

  • Textbook: Given the vast amount of on-line documentation (including lecture material for this course), FAQ's and tutorials, there is probably no need for either a C or Java textbook. Also, given the sheer size of the Java language, no single book really does justice. If you must get a book, here are some suggestions for you to consider:
    • This body of lecture material and examples.
    • The book Java in a Nutshell, 6-th Edition by David Flanagan, O'Reilly Publishing. This book is a handy reference that contains a (rather terse) overview of the language, tools and API's. Initially, a beginner will find it difficult to read, but it's small and convenient.
    • Suggested companion book: Core Java, Volume 1 by Cay Horstmann. This book, a introduction to Java for programmers, starts from scratch and has plenty of examples. Use this book beyond the course material to get a different take on the same material.
    • A free intro-programming-in-Java book: Introduction to Programming Using Java, 7th Edition by D.Eck. Another free book: Thinking in Java by B.Eckel. This one goes further into objects.
    • A similar terse reference book for C is: C Pocket Reference by P.Prinz and U.Kirch-Prinz (O'Reilly), a small, inexpensive ($10!) and useful C reference that includes C99. Another one (that's free) is: Essential C by N.Parlante.
    • If you're looking for something longer, try the ones by McGregor etal (Simple C), Kelley & Pohl (A Book on C) or Bramer et al (C for Engineers), of this free one: The C Book by Banahan et al.

  • Programming load: The course will be moderately programming-intensive, comparable with CS-1112. If you are taking TWO OTHER programming-intensive courses, you could be in for a rough semester. Stop by and discuss the issue with me.

  • Coursework:
    • In-class quizzes: 2-3 unannounced quizzes.
    • Module exercises: lots of them.
    • Small programming exercises : 5-6 exercises, each due in a week's time.
    • Programming assignments: 4 assignments, each due in two weeks' time.
    • Exams: 2 in-class exams.

  • Approximate grading:
    • 5 points: quizzes.
    • 15 points: module exercises.
    • 20 points: small programming exercises, about 4-5 points each.
    • 40 points: 4 programming assignments, 10 points each.
    • 20 points: two exams, about 10 points each.
    • Total: 100 points.

  • Assignment submission and late work policy:
    • All exercises and assignments will be submitted as ZIP files via Blackboard, as described in this page.
    • No late submissions will be accepted for the module exercises and for the one-week exercises without a proper (typically medical) reason. If you should be late with one of these, you ought to nonetheless do the work and submit it for grading. If it turns out that you are near a grade borderline at the end of the semester, we could take this into account.
    • The larger programming assignments may be submitted late, but points will be taken off: 20 percent for each 24-hour period after the due-date. These points will not be pro-rated hourly. Thus, if an assignment is due 5pm Oct 19th, a submission at 5.05pm Oct 19th loses 20 percent.
    • The submission time will be determined by the date and time as submitted in Blackboard.
    • If you have been ill and have a doctor's certificate to prove it, you will be eligible to take a missed quiz or exam, and be able to submit an assignment late, provided you submit this certificate (during my office hours) reasonably soon after recovering from the affliction.

  • Email policy: You can send email to my GW email address. I will answer most class email during specific times set aside during the week for this purpose - so do not expect an instantaneous response. Since this is an advanced class, you may not perform "debugging by email". That is, do not send me code snippets and ask me to identify the problem. If you want me to look at your code, you have to stop by in person during office hours and bring your laptop along. Email is typically used for clarification regarding coursework. It's best to first meet the TA with your issue.

  • Academic Integrity policy:
    • In this course, you will be expected to work on all assigned coursework by yourself, unless otherwise specified by instructions on this page. If you have any questions whatsoever regarding these policies, see me during office hours.
    • Do NOT exchange course-related code with anyone (including anyone not registered in the course), or download code for use in your assignments or exercises without permission. Likewise, you may not look at anyone else's code or show your code to anyone else. Protect your work: for example, be careful not to leave your printouts around.
    • Important: We will be using an automated tool to compare all code submitted by students. The tool is pretty good at catching cases of plagiarism. It is expected that you will be able to properly explain anything you submit as your own work. The instructor and TAs reserve the right to question you on anything you submit, including anything you cite as externally derived code. Failure to answer such questions might be viewed as grounds for an integrity violation.
    • Important: The two exams will feature programming. You will NOT be able to do the exams if you've not been doing all the programming in the assigned work.
    • If you are using a tutor, you may not show your CS-2113 homework-related code to your tutor nor use code shown or written by your tutor. All tutors for CS-2113 need to first register with me, by meeting me during office hours.
    • The GW Academic Integrity Code will apply to this course.

  • If you have a disability that may effect your participation in this course and wish to discuss academic acommodations, please contact me as soon as possible.

  • Coding standards:
  • Having completed CS-1112, you are expected to submit well-written code:
    • Comments must be substantive.
    • Select readable variable names and method names.
    • Use consistent indentation (preferred: four spaces) and style.

  • Working at home or in the lab:
    • An important goal of this course is to familiarize you with the Unix environment, in particular, at the command-line.
    • Download and install the GW VPN client on your laptop. You will need this if working off-campus, in which case you need to run the VPN (Cisco AnyConnect) client and login with your GW net ID and password. You will not need to do this on campus.
    • You will be given an account on a Unix machine in SEAS, where you will do all your programming in this course. This machine is accessed through your browser (works best in Firefox).
    • In this course, we want you to experience working at the commandline and using Unix editors like pico, nano or emacs. That is, we don't want you to become dependent on sophisticated IDEs (like Eclipse) with features like auto-completion that diminish learning.
    • To get started, see this page

  • GW's emergency preparedness guide.