Course CSE110
Title Introduction to Computer Science
Credits 3
Course Coordinator

An introduction to the fundamentals of computer science. Topics covered include algorithmic design, problem-solving techniques for computer programming, fundamentals of digital logic and computer organization, the role of the operating system, introductory programming methodology including variables, assignment statements, control statements and subroutines (methods), programming paradigms, the compilation process, theoretical limits of computation, social and ethical issues. This course is intended for students who have not taken any college-level computer science course containing programming assignments in a high-level programming language.

Prerequisite Level 3 or higher on the mathematics placement examination
Course Outcomes
  • Develop basic programming concepts including assignments, conditionals, loops, subroutines and common data types in a high-level programming language.
  • Survey key subjects of computer science, such as algorithmic problem solving, computer organization, and the role of operating systems & compilers.
  • Expose students to the Social and ethical issues of computing as a professional discipline.

  • An Invitation to Computer Science, Java Version, By G. Michael Schneider and Judith L. Gersting Brooks/Cole 2000 ISBN: 0-534-37488-3

Major Topics Covered in Course
  • Algorithms expressed in pseudo code. Sequential, conditional, and iterative constructs in pseudo code and in java. Integer, long, double, character, and array data types in java.
  • Intro to time complexity as or time. Sequential search vs. binary search. Review of logarithms and exponentials. Binary code tables and the constraint that n bits allows the coding of items.
  • Binary representation of nonnegative integers and ASCII characters.
  • Boolean algebra and truth tables. Logic circuits with AND, OR, and NOT gates. Sum-of-products algorithm for constructing a circuit for a given truth table.
  • Computer organization at the level of CPU, memory, I/O, bus, cache memory, disk memory. Simplified 1-register model for machine language and assembly language.
  • Function and general operation of a compiler and an assembler. The notion of a BNF grammar and a formal language that it generates.
  • Brief view of several programming languages and the concept of functional vs. procedural vs. declarative programming style.
  • The function of an operating system.
  • GUI vs. text-based interfaces.
  • Point-to-point communication between computers via analog signals. Error detection with a parity bit. Local area and wide area networks.
  • Internet concepts (e.g., IP address, name server, router, ACK/NACK.
  • Computers and society, e.g., issues of privacy, computer crime, responsibility for "computer errors", spam, identity theft.

Skills taught include the ability to use a text-based UNIX operating system to edit, compile, and execute a java program up to a few dozen lines long and containing if's, while's, for's, arrays, and one or two methods.

    Problem-solving is emphasized throughout.

    Laboratory Projects

    A short programming project is assigned each week, increasing in complexity up to about a page long by the end of the semester. Topics vary but typically:

    • Get familiar with environment, SSH, pico editor, basic UNIX commands.
    • Get familiar with java compiler and notion of a class file, with a "hello world" java program.
    • Creating while loops for printing various arithmetic progressions.
    • Input and calculate sum of numbers by a running sum method in time, and the series formula time.
    • Discovering overflow and round off error comparing long double data types.
    • Introduction to arrays and character data types, e.g., input a sequence of characters and print them in reverse order.
    • A numerical method algorithm, e.g., bisection search for a root of a polynomial.
    • Nested loops in an algorithm.
    • A program which outputs source code for another program which is then compiled and run, e.g., produce print statements to generate a program which generates permutations without loops.
    • A program introducing methods, e.g., generating random sentences.
    • A program producing "graphics" in the form of characters vs. spaces, e.g. an "ASCII art" ellipse.

    Course Webpage