Programming for Engineers (Winter 2014-15)
The textbook for the course is Big Java: Early Objects by Cay Horstmann, 5th edition, John Wiley and Sons, 2014 (ISBN: 978-1-118-43111-5). The online resource, WileyPlus, is NOT a requirement for this course.
Please note that all exams in this course are open-lecture-slides and not open-textbook. Access to a hardcopy textbook is not required during the examination. Therefore, purchasing an electronic copy of the textbook will adequately serve the needs of this course.
Students in the course will also be required to frequently access and use online resources such as Oracle's Java API documentation.
Alternate sources and optional references
Students with advanced interest in Java programming will find it interesting and useful to refer to Core Java: Volume I--Fundamentals by Cay Horstmann and Gary Cornell, 9th edition, Prentice Hall, 2012, and Core Java: Volume II-–Advanced Features by Cay Horstmann and Gary Cornell, 9th edition, Prentice Hall, 2013.
Students who prefer an alternate style of presentation from that of the textbook are advised to refer to Imagine! Java: Programming Concepts in Context by Frank M. Carrano, Prentice Hall, 2010.
This course presents an introduction to the Java programming language with a special emphasis on engineering applications. The course additionally includes a weekly 2-hour lab session and a take-home assignment each week in which students attempt programming exercises to solve engineering problems.
- Fundamentals of computer architecture; compilers, interpreters, and byte code; variables; primitive types; the concepts of classes and objects; using objects and calling methods; parameters and return values.
- Class and method definitions; information hiding and encapsulation; engineering problems and solutions; fields; constructors; implementation of classes and simple methods; implicit and explicit method parameters.
- Fundamental data types; number types; constants; assignments; arithmetic operations; pitfalls in using floating-point numbers; assignment and related operators; static methods; using Strings; console I/O.
- Branching statements; Boolean operators and variables; the correct ordering of decisions in multiple branches.
- Control flow through iteration; nested loops; using sentinel values; managing control out of a loop; concepts of algorithms and pseudo-code; engineering problems and solutions.
- Declaring, creating and using arrays; searching and other operations on an array; how to use arrays efficiently; engineering examples.
- Random number generation in Java; simulation of probabilistic events; simulation of engineering systems; testing and debugging techniques; engineering examples.
- Simple graphics and graphical applications; drawing shapes; understanding the Java graphics framework; Java applets.
- Multi-dimensional arrays; copying arrays; using sparsely filled arrays; regression testing; engineering examples; a brief introduction to the art of desigining classes.
The grading in the course is based on weekly in-lab assignments, weekly take-home assignments, a mid-term examination and a final examination. The grade distribution will be as follows:
- Weekly in-lab assignments: 10%
- Weekly take-home assignments: 10%
- Mid-term examination: 35%
- Final examination: 45%
Both your class rank in the exam scores and your class rank in the overall scores will be considered for the final grade.
Policy on exams
All exams in the course will be open-lecture slides and not open-textbook. Use of books or any other material, however, is not permissible. Use of calculators, cell phones, laptops or any other devices capable of computing are prohibited. The exams will cover material discussed in the lectures, homeworks or sections of the textbook given as reading assignments. For example, the exams may include questions on material covered in class lectures or homeworks but not specifically covered in the textbook. Similarly, the exams may include any material covered in a section of the textbook given as a reading assignment but not specifically covered in the lectures or homeworks.
Policy on assignments
The in-lab component of the weekly lab assignments will be graded during the laboratory session. Students will be required to complete the in-lab component under the supervision of the teaching assistant before the end of the lab session. Submissions made without attending the laboratory session will not be accepted and will be graded at zero points.
Each student is expected to work on his/her programming assignment independently; it is not considered acceptable to copy another student's work or use solutions from any other source. Students may discuss overall big-picture strategies for completing an assignment but each student should submit his or her own original code.
Policy on absences
Absence from examinations or lab sessions will be excused only under extraordinary circumstances such as medical or family emergencies. A missed examination or a lab session without prior approval and without legitimate reasons will be graded at zero points. An absence will be excused only if the student is able to provide legitimate documentation (such as a physician's note). An absence from an examination or a lab session with prior approval will require the student to take an alternate exam at a later time. Special examinations will not be held earlier or on later dates to accommodate, for example, flight schedules for vacations.
Absence (with approval) in a lab assignment will not excuse the student from making the submission, but will only extend the deadline for the submission.
Policy on academic honesty
The following is a partial list of activities that will be considered to constitute academic dishonesty:
- Presenting the work of another person (fellow student or not) as your own.
- Cheating in an examination such as through conversations with other students, sharing notes, calculators or other materials with another student, using unauthorized material not approved by the instructor in an examination.
- Inappropriate or unauthorized use of technology such as calculators, laptops or cell-phones during an examination.
- Using or attempting to use the work of another student or providing answers to other students.
- Failing to take reasonable measures to protect your work from use by other students in homeworks, projects or examinations.
- Penalties for academic dishonesty include a lowering of the grade or a failing grade in the course.
- The companion website of the textbook.
- To find out your grades in the course, go to Blackboard Learn.
- The Java Development Kit (JDK) by Oracle. It is recommended that you download the latest version of the kit (JDK 7 along with NetBeans 7.4) to compile and run Java programs on your Linux, Solaris or Windows machine. If you have a MAC, you don't have to do anything. Mac OS X comes with a fully configured and ready-to-use Java runtime and development kit, but you may still want to download NetBeans if you wish to also use an Integrated Development Environment (IDE). If you don't like NetBeans, you may download and try an alternate IDE called Eclipse.
- The Java API Documentation (an essential reference for this course and, in general, for programming in Java).
- Java NetBeans (a Java Integrated Development Environment).
- A quick 10-minute tutorial on NetBeans.
- Drexel Learning Center: Assistance and tutoring for this course are available from the Drexel Learning Center, 201 Main Building (215-895-2568, E-mail: dlc at drexel dot edu).