CS 1401 Introduction to Computer Science
Fall 2012 Syllabus

Class Meetings: Lecture sections in CCSB 1.0704:

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


Teaching Assistants (TAs):

Peer Leaders: Course Objectives: First course for students majoring in Computer Science. Introduction to problem solving with computers, including representation, control structures, and software development methods; closed laboratory and programming assignments in a high-level language; programming environments; social and ethical aspects of computing. Prerequisite: MATH 1508 or MATH 1411 with a grade of C or better.

Knowledge and Abilities Required Before the Students Enter the Course: Students entering the course are not required to have 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 Outcomes: 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. On successful completion of this course, students will be able to:

  1. use the syntax and semantics of a higher-level language to express their solutions to programming problems, including the correct use of:
    1. basic variable types such as integer, real number, character, string, 1-D array
    2. assignment, arithmetic, and logical operations
    3. basic control structures: if-then, for-loop, while-loop
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:
  1. use the syntax and semantics of a higher-level language to express their solutions to programming problems, including the correct use of:
    1. complex arithmetic and logical expressions
    2. simple I/O operations
    3. methods, i.e., user-defined subprograms
    4. classes, i.e., user-defined types
  2. describe computer representation of simple data types and operations, including operations with binary numbers
  3. use testing and debugging strategies, including black-box and white-box testing, test drivers, stubs and test suites, to identify software faults
  4. use exceptions to handle violation of preconditions
  5. use teamwork roles and methods in the classroom
Level 1: Knowledge and Comprehension: Level 1 outcomes are those in which the student has been exposed to the terms and concepts at a basic level and can supply basic definitions. On successful completion of this course, students will be able to:
  1. describe, at a high level:
    1. technical aspects of computing: memory, operating system, editors, interpreters, compilers, debuggers, virtual machine
    2. computing as a profession, from required knowledge and skills to major career options
    3. relation between computing and society, including main social, ethical, and legal issues
    4. history of computing
Textbook: Reading and laboratory assignment concepts for the Java Programming Language will be drawn from Introduction to Java Programming: Comprehensive Version, 9h Ed., by Y. Daniel Liang (Prentice Hall, 2013). You are expected to acquire a copy for your use in this course. 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 computer lab and in the two instructional labs on the first floor. 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 10 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. The nominal percentage-score-to-letter-grade conversion is as follows: You must earn a C or better to continue to the next course in this sequence.

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 and lab assignments must be done individually, unless otherwise instructed. For some lab assignments, you will be working with a partner on pair programming assignments (see below for more details).

Laboratory Sessions: You are required to sign up for and attend the lab section associated with this course, meeting two times a week for a total of 3 hours per week. Laboratory sessions are designed to give you guidance and assistance with projects. In a typical lab session, a Teaching Assistant will present additional material that will help you understand the concepts and complete your assignments successfully. They also will model professional techniques and work habits, and you should feel free to ask questions. Although you may discuss lab assignments in a general way with other students, if you (or you and your partner for team projects) need help coding or testing your programming assignments you should consult the TA, a tutor (in the ACES lab), or the instructor, rather than other students. Do not exchange programs or let other students look at your code, even "just so they can see how you did it."

Your TA will be grading lab assignments, and you should work closely with the TA to make sure you understand the assignment and any specific instructions clearly. Lab attendance is part of your grade and you should make arrangements with your TA (and your lab partner on team projects) if you must miss a lab. To earn full credit for attendance, you must show up on time, stay for the entire session, and work only on your assignment. You will be working individually on lab projects most of the time, but some assignments require that you work with a lab partner. For those projects, your participation and cooperation with your lab partner will be a factor in your grade.

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. Detailed instructions for this requirement will be supplied in a separate document.

Quizzes: The purpose of each quiz is to ensure that you are staying current with the weekly reading assignments and to verify that you have mastered the major concepts of recent lectures. Quizzes typically will be about 10-15 minutes in length and may include material assigned for upcoming lectures in addition to selected concepts from previous lectures.

Quizzes usually will be given at the beginning of class. There will be no make-up on missed quizzes.

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 four or five weeks. Exams will take place during the regular class session. There will be three exams, contributing 36% 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 let me know as soon as possible.

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

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 are planning to take CS 2401 and 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.

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 (for example, homework or exams), is to be completed independently and should be unmistakably your own work (or, in the case of pair work, your pair's work). You may not represent as your own work material that is transcribed or copied from another person, book, or any other source, such as 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) Material covered in this course is cumulative, and new topics will require the understanding and application of previous topics. Notice that the first part of this course uses the Python Programming Language for examples and assignments, and that a transition to the Java Programming Language occurs in Week 7. While no textbook is required for Python, you should plan ahead to purchase and start reading your Java textbook before Week 7. The actual content of lab assignments may vary from the example descriptions provided below.

  1. Introduction to computers and Computer Science, demo of Python
  2. Elementary Python programming/Drawing lines using while-loops
  3. Drawing filled shapes with nested loops
  4. Defining functions with parameters to draw horizontal, vertical, and sloped lines
  5. Conditional statements and functional abstraction
  6. Test plans and debugging, defining other functions
  7. INTRODUCTION TO JAVA, drawing lines using while- and for-loops
  8. Defining Java methods to draw lines, using conditional statements
  9. Single-dimensional array definition, file I/O, brief intro to exceptions
  10. Common array algorithms, line-specific array algorithms, arrays passed as parameters to methods
  11. Objects and classes, object-oriented programming process and design
  12. Defining classes
  13. Inheritance and subclasses, polymorphism, arrays of objects
  14. Inheritance (cont'd.)
  15. Additional exceptions and ethics in computing
  16. Finals week: