CS-2113: Software Engineering

FAQ



About
Announcements
Modules
Coursework
FAQ


Java API
C CPI

  • What is CS-2113 all about?
    CS-2113 has several objectives. First, we need to cover enough of the C programming language so that you are able to do assignments in CS-2461, CS-3410, and CS-3411 (all of which are required courses in the B.S. program). Second, CS-1111 and CS-1112 don't have enough time to cover all aspects of Java. By the end of CS-2113, you will be very comfortable with most everything in Java, including the murky details of objects and inner classes. Third, this course shows you how applications are developed, both at the front-end (GUI's, about which you already know something) and at the back-end (websites). Finally, CS-2113 will strengthen your basic programming skills in preparation for later CS courses.

  • Who should take this course? The course is required of all students in the BA, BS Computer Science programs, the Systems Engineering program, and the CS minor.

  • I haven't taken CS-2113. Can I take this course? If all you've done is CS-1111, then no. If you've taken the equivalent of CS-1112 elsewhere, talk to me about it - you might be able to take the course.

  • I've taken CS-1112, but in another language. Can I take this course? This is a tough one. Generally, if you are comfortable with programming, you can pick up Java quickly. Indeed, while the Java students are coping with C in the first few weeks, you will have the time to get up to speed with Java. However, if you struggled with your C or C++ courses, then CS-2113 might be exceptionally challenging. Stop by and discuss this with me.

  • Is this a programming-intensive course? Moderately so, probably a bit more than CS-1112.

  • Will I be able to work at home? Absolutely. Both the C and Java parts can be done at home on Windows, Linux or Mac platforms. You will be able to access your Unix account via a browser. However, you can also develop on your own laptop. Most Linux installations already come with gcc (for C); installing Java is easy. Mac-OSX comes with Java installed but you'll need to install C, which you can do by installing X-Code (try the LLVM compiler called clang). Windows needs more work: there are several options:
    • Install a virtual machine with Linux, as shown here. Then, do everything inside Linux.
    • Install Cygwin and then Java. Cygwin already has C.

  • What's covered in the labs? Is attendance mandatory? The labs will cover some additional material from class, especially in the first half of the semester. It's also an opportunity to clarify what's expected of you in particular assignments. We will take attendance. Generally, if you are near the top of the class, we will not worry about attendance. However, all others are expected to attend and participate in all labs.

  • What's the difference between a module exercise and an exercise with a due date?
    The module exercises are embedded in the course material on this site that is organized into modules. For example, take a look at this module for C, and scroll down to see exercises embedded in the text. We will start working and try and complete on many of these in class. Those that we can't should be done the same day preferably, and will be due in Blackboard as soon as we start the next module. For example, if we've started Module 3 this week, that means you are expected to submit Module 2 exercise by the end of the week. Other exercises, like assignments, are to be submitted independently. Both module exercises and other exercises/assignments are to be submitted using our submission procedure.

  • So, are in-class exercises to be submitted?
    Correct. These are to be uploaded as a zip file (one zip per module) in Blackboard.

  • Should I worry about which version of Java (or C) I'm using?
    For C, we will use ANSI-C-89, the most common form of C. Please do NOT use any of the more advanced features because we will compile assuming C-89. For Java, most of what we cover will be somewhere between Java 1.2 and 1.5 (also referred to as Java 2 or Java 5). Java 1.8 (Java 8) introduces significant new language features that we will not focus on but you can use a Java 1.8 compiler.

  • Why are we doing this in Unix? And why can't I use an IDE like Eclipse? Working at the command-line in Unix is a core CS experience and skill, preparatory to working on operating systems, backend servers, and embedded systems. While IDEs will be useful later in your professional life, at this moment, some of their features, such as autocompletion and colorizing, inhibit the learning of good coding skills. Plain editors on the other hand help you develop good reading and syntactic skill.