CS 1401 Introduction to Computer Science
Spring 2007 Syllabus

Class Meetings: Lecture sections: You should be enrolled in one lecture section and one lab section. You must attend the lecture section and the lab section that you are enrolled in; do not drop in on another section without prior approval.

NOTE: To avoid delaying your progress through the program, you also should be enrolled in Math 1411 (Calculus I) so that you will be prepared for Math 2300 (Discrete Math) next semester. If you are not, we strongly recommend that you consider adjusting your schedule.


Teaching Assistants (TAs):

Peer Leaders:

Course Objectives: This is a first course for students majoring in Computer Science, providing an introduction to problem solving with computers, including representation, control structures, and software development methods; programming environments; social and ethical aspects of computing. Prerequisites: MATH 1508, with a grade of C or better.

Knowledge and Abilities Required Before the Students Enter the Course: Students entering the course are assumed to have no background in computer science or programming. They should be familiar with running software applications and using a computer, and they should be familiar with topics from pre-calculus including algebraic functions and proofs, and base representations of numbers.

Learning Outcomes
Level 3: Synthesis and Evaluation:
Level 3 outcomes are those in which the student can apply the material in new situations. This is the highest level of mastery. There are no level 3 outcomes for this course.

Level 2: Application and Analysis:
Level 2 outcomes are those in which the student can apply the material in familiar situations, e.g., can work a problem of familiar structure with minor changes in the details.

Upon successful completion of this course, students will be able to:

a. use the syntax and semantics of a higher-level language to express their solutions to programming problems, including the correct use of:

b. use functions and parameter passing involving both primitive types and reference types

c. apply problem-solving strategies to design a solution to a problem similar to ones seen before

d. design simple ADTs to solve a problem similar to one seen before

e. apply testing and debugging strategies, including black-box and white-box testing, test drivers, stubs and test suites, to identify software faults

f. describe numeric data representation and number bases, and convert numbers between bases

g. formulate complex logical expressions involving multiple and/or/not combinations

h. implement nested if statements

i. formulate complex arithmetic expressions involving operators of differing precedence and associativity and understand the order of evaluation of sub-expressions

j. implement simple ADTs incorporating multiple primitive instance variables and at least one reference instance variable, with appropriate accessor and modification methods

k. use dynamic memory allocation, e.g., new, to create new objects

l. use simple I/O to read and write character and numeric data to and from files, keyboard, and display

m. use predefined or built-in exceptions to handle violation of preconditions

n. use standard documentation to determine the use of an unfamiliar class or method

o. use teamwork roles and methods in the classroom

Textbook: Reading and laboratory assignments will be drawn from Java Programming: Program Design Including Data Structures by D. S. Malik (Thomson Course Technology, 2006). This book is available at the bookstore and through major online book retailers, and you are expected to acquire a copy for your use in this course. This same book will be used for the next computer science course CS 2401. Photocopied textbooks are illegal and their use will not be tolerated.

Software: Software used in this course will be available on the Windows computers in the main lab (room 300) and in the two instructional labs (rooms 301 and 319). For those who wish to use the course software on your home computer, instructions will be given in the labs. Assignments: Reading and homework assignments will be handed out or announced in class and in labs. If you miss a class or lab session, it is your responsibility to find out what you missed. You should expect to spend at least 8 hours/week outside of class and lab on reading and homework.

Grading: Your semester grade will be based on a combination of homework and lab assignments, weekly quizzes, lab attendance, exams, and a final exam.The approximate percentages are as follows:

Each of these is explained in more detail below.

Homework and Lab Assignments: Homework and lab assignments are designed to allow you to practice using the concepts presented in lecture and in your reading. Homework and lab assignments may include written problems, tutorial exercises, and programming problems. Assignments usually will be due at the start of your lab session. Late homework will be accepted only in unusual circumstances, by prior arrangement if at all possible.

Homework must be done individually. While you may discuss the problem in general terms with other people, your answers and your code should be written and tested by you alone. Do not exchange programs or let someone look at your code, even "just so they can see how you did it." If you need help, consult a TA or a tutor (in the ACES lab) or one of the professors.

Laboratory Sessions: Laboratory sessions are designed to give you guidance in getting your homework assignment started well. In a typical lab session, the Teaching Assistant will present additional material that will help you complete the assignment and answer your questions as you begin work.

You are required to sign up for and attend one of the lab sections associated with this course. Each lab section meets twice per week for 80 minutes per session. Attendance will be taken. To earn full credit for attendance, you must show up on time, stay for the entire session, and work only on your assignment. You may be excused from lab with full credit if your work has been completed and turned in.

Research Participation: During the course of the semester, you must participate as a subject in two Computer Science experiments or write two short (1-2 pages each) papers describing some aspect of the research going on within the Computer Science department. The purpose of this requirement is to make you aware of the research going on within this department. Details will be supplied later in the semester.

Quizzes: The purpose of the weekly quiz is to ensure that you have read the weekly reading assignment and to verify that you have mastered the major concepts of recent lectures. Quizzes typically will be about 15 minutes in length and will cover the material assigned to be read for the upcoming lecture plus selected concepts from previous lectures.

Quizzes will be at the beginning of class and will not be announced in advance. There will be no make-up on missed quizzes, but we will use only your best 10 scores in calculating your grade for the semester.

Exams: The purpose of the exams is to allow you to demonstrate mastery of course concepts. Each exam will focus on the material from the previous three or four weeks. Exams will take place during the regular class session. There will be four exams, each contributing 8% to your final grade, or 32% total to the overall course grade.

Because the exams contribute so heavily to your total grade, it is vital that you do well on them. If you have test-taking difficulties in general, or if you have difficulties with our tests in particular, please come talk to us as soon as possible (and certainly before the first exam).

Exams are planned for the following dates (subject to change):

  1. Thursday, February 8 (Week 4)
  2. Thursday, March 1 (Week 7)
  3. Thursday, April 5 (Week 11)
  4. Thursday, April 26 (Week 14)
Make-up exams will be given only in extremely unusual circumstances. If you must miss an exam, please meet with an instructor, BEFORE the exam if at all possible.

Final Exam: The final exam will be comprehensive and will count 15% toward your course grade. You must score 50% or better on the final exam to pass this course. If you cannot demonstrate your understanding of the concepts and skills needed for success in CS 2401, you cannot pass this course even if you have enough points to do so.

You must take the final exam during the time shown in the schedule for the class section that you are formally enrolled in. Do not simply "drop in" to the other section; there will not be a copy of the exam for you. This is University policy. If you have a scheduling conflict (e.g., if you are taking a final at EPCC) or if you are scheduled for three final exams in one day, see one of the instructors IN ADVANCE.

Grading: The nominal percentage-score-to-letter-grade conversion is as follows:

We reserve the right to adjust these criteria downward, e.g., so that 88% or higher represents an A, based on overall class performance. The criteria will not be adjusted upward, however. You must earn a C or better to continue to the next course in this sequence.

Standards of Conduct: You are expected to conduct yourself in a professional and courteous manner, as prescribed by the UTEP Standards of Conduct.

Graded work, e.g., homework and tests, is to be completed independently and should be unmistakably your own work (or, in the case of group work, your team's work), although you may discuss your project with other students in a general way. You may not represent as your own work material that is transcribed or copied from another person, book, or any other source, e.g., a web page. Professors are required to--and will--report academic dishonesty and any other violation of the Standards of Conduct to the Dean of Students.

Disabilities: If you feel that you may have a disability that requires accommodation, contact the Disabled Student Services Office at 747-5184, go to Room 106E Union, or email dss@utep.edu

Weekly Schedule: (tentative and subject to change) When learning a new topic, often, we will see how it relates to the previously learned topics and thus, we will use this as an opportunity to recall the previous topics

  1. Reading: Chapter 1, An Overview of Computers and Programming Languages, pp. 1-26
  2. Reading: Chapter 2, Basic Elements of Java, pp. 27-54
  3. Reading: Chapter 2, Basic Elements of Java, pp. 54-110
  4. Reading: Chapter 3, Introduction to Objects and Input/Output, pp. 111-166
  5. Reading: Chapter 4, Control Structures I, pp. 167-222
  6. Reading: Chapter 5, Control Structures 2, pp. 223-300
  7. Reading: Chapter 6, Graphical User Interface (GUI) and Object Oriented Design (OOD), pp. 301-358
  8. Reading: Chapter 7, User Defined Methods, pp. 359-444
  9. Reading: Chapter 8, User Defined Classes and ADT, pp. 445-528
  10. Reading: Chapter 9, Arrays, pp. 529-557
  11. Reading: none
  12. Reading: Chapter 11, Inheritance and Polymorphism, pp. 651-742
  13. Reading: Chapter 12, Handling Exceptions and Events, pp. 743-802
  14. Reading: none
  15. Reading: none