Lecture: 3 hours
Discussion: 1 hour

Prerequisite: ECS 034 or ECS 036C; or Consent of Instructor.

Catalog Description:
Goals and philosophy of scripting languages, with Python and R as prime examples. Applications include networking, data analysis and display, and graphical user interfaces (GUIs).

Credit restrictions, cross listings: None

Summary of course contents

The intended audience consists of both majors and nonmajors.

  1. Basic Python and R programming, especially the object-oriented features.
  2. Issues of design philosophy, especially in terms of lack of strong typing.
  3. Comparisons between the two languages, in terms of power, clarity, degree of object-orientation, etc.
  4. Parallel processing.
  5. Performance issues, such as overcoming interpreted nature of execution.

Goals: Students will (1) be able to write reasonably complex programs in the scripting languages studied, and (2) be able to assess real-life situations as to the appropriateness of these languages for specific applications.

Illustrative reading

Instructor’s notes

Computer Usage:
Extensive programming projects typical of upper-division ECS courses. Work may be done either in CSIF or on the students’ own PCs.

Engineering Design Statement:
Engineering design skills are developed through a series of progressively more complex programming assignments, in which the emphasis is on functionality, clarity and efficiency.

ABET Category Content:
Engineering Science: 2 units
Engineering Design: 2 units

GE: Science & Engineering

Overlap: The programming language R is used to some degree in course 132, but with a different and much narrower emphasis than in this course. Network programming is covered in detail in course 152B, whereas in this course the focus is as an application of Python and R, covered in far less detail than in course 152B.

Instructors: N. Matloff

History: Reviewed 2018.9.7 (CSUGA): prerequisites updated to include new lower division ECS series courses. 2012.10.28 (N. Matloff): small revisions to the catalog description, course contents, and overlap statement (eg, R replacing Perl). Original course description from October 2006 (N. Matloff).


1 an ability to apply knowledge of mathematics, science, computing, and engineering
2 an ability to design and conduct experiments, as well as to analyze and interpret data
3 X an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 an understanding of professional, ethical, legal, security and social issues and responsibilities
7 an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 X a recognition of the need for, and an ability to engage in life-long learning
10 X knowledge of contemporary issues
11 X an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity