Computer Science: Programming with a Purpose

所在平台: Coursera

课程主页: https://www.coursera.org/learn/cs-programming-java

课程评论:没有评论

第一个写评论        关注课程

课程简介

课程名称:《计算机科学:有目的的编程》 课程概述:本课程旨在帮助学生学习编程,强调计算机科学在现代社会的重要性。课程内容涵盖了我们书籍《计算机科学:跨学科方法》的前半部分,注重科学背景下的编程基础教育。内容包括基本编程元素(如变量、条件语句、循环、数组和输入/输出),函数及其关键概念(如递归和模块化编程),以及面向对象编程的现代介绍。我们使用Java编程语言教授适用于多个现代计算环境的计算问题解决基本技能。 课程大纲: 1. **基本编程概念**:讨论编程的重要性,并介绍Java的基本数据类型和程序开发过程。 2. **条件语句和循环**:讲解Java的控制结构,通过短程序展示排序、平方根计算等任务,并进行调试示例。 3. **数组**:介绍Java的数组数据结构及其在处理序列值中的应用,包含洗牌和随机过程示例。 4. **输入和输出**:探讨与程序交互的机制,包括文本和动画的处理,及自然现象的分形绘图示例。 5. **函数和库**:介绍模块化编程的艺术,聚焦Java方法及其在数字音乐生成中的应用。 6. **递归**:深入讲解递归函数及其经典示例,探讨动态编程的相关概念。 7. **性能**:教授理解程序性能的科学方法,并建立数学模型来预测程序运行时间。 8. **抽象数据类型**:展示如何创建自定义数据类型,并将程序视为现实世界概念的抽象表示。 9. **创建数据类型**:深入讲解Java编程中的自定义数据类型,并以复数的视觉表现作为示例。 10. **编程语言**:总结编程语言的重要议题,并比较Java与C、C++、Python、Matlab等语言。 所有课程内容均免费提供,但完成后不提供证书。这门课不仅适合科学与工程学生,还适合艺术、社会科学与人文学科的学习者。

课程大纲

Name:BASIC PROGRAMMING CONCEPTS

Description:Why program? This lecture addresses that basic question. Then it describes the anatomy of your first program and the process of developing a program in Java using either virtual terminals or a program development environment, with some historical context. Most of the lecture is devoted to a thorough coverage of Java's built-in data types, with example programs for each.

Name:CONDITIONALS AND LOOPS

Description:The if, while, and for statements are Java's fundamental control structures. This lecture is built around short programs that use these constructs to address important computational tasks. Examples include sorting, computing the square root, factoring, and simulating a random process. The lecture concludes with a detailed example illustrating the process of debugging a program.

Name:ARRAYS

Description:Computing with a large sequence of values of the same type is extremely common. This lecture describes Java's built-in array data structure that supports such applications, with several examples, including shuffling a deck of cards, the coupon collector test for randomness, and random walks in a grid.

Name:INPUT AND OUTPUT

Description:To interact with our programs, we need mechanisms for taking information from the outside world and for presenting information to the outside world. This lecture describes several such mechanisms: for text, drawings, and animation. Detailed examples covered include fractal drawings that model natural phenomena and an animation of a ball bouncing around in the display window.

Name:FUNCTIONS AND LIBRARIES

Description:Modular programming is the art and science of breaking a program into pieces that can be individually developed. This lecture introduces functions (Java methods), a fundamental mechanism that enables modular programming. Motivating examples include functions for the classic Gaussian distribution and an application that creates digital music.

Name:RECURSION

Description:A recursive function is one that calls itself. This lecture introduces the concept by treating in detail the ruler function and (related) classic examples, including the Towers of Hanoi puzzle, the H-tree, and simple models of the real world based on recursion. We show a common pitfall in the use of recursion, and a simple way to avoid it, which introduces a different (related) programming paradigm known as dynamic programming.

Name:PERFORMANCE

Description:When you develop a program, you need to be aware of its resource requirements. In this lecture, we describe a scientific approach to understanding performance, where we develop mathematical models describing the running time our programs and then run empirical tests to validate them. Eventually we come to a simple and effective approach that you can use to predict the running time of your own programs that involve significant amounts of computation.

Name:ABSTRACT DATA TYPES

Description:In Java, you can create your own data types and use them in your programs. In this and the next lecture, we show how this ability allows us to view our programs as abstract representations of real-world concepts. First we show the mechanics of writing client programs that use data types. Our examples involve abstractions such as color, images, and genes. This style of programming is known as object-oriented programming because our programs manipulate objects, which hold data type values.

Name:CREATING DATA TYPES

Description:Creating your own data types is the central activity in modern Java programming. This lecture covers the mechanics (instance variables, constructors, instance methods, and test clients) and then develops several examples, culminating in a program that uses a quintessential mathematical abstraction (complex numbers) to create visual representations of the famous Mandelbrot set.

Name:PROGRAMMING LANGUAGES

Description:We conclude the course with an overview of important issues surrounding programming languages. To convince you that your knowledge of Java will enable you to learn other programming languages, we show implementations of a typical program in C, C++, Python, and Matlab. We describe important differences among these languages and address fundamental issues, such as garbage collection, type checking, object oriented programming, and functional programming with some brief historical context.

课程评论(0条)

课程详情

The basis for education in the last millennium was “reading, writing, and arithmetic;” now it is reading, writing, and computing. Learning to program is an essential part of the education of every student, not just in the sciences and engineering, but in the arts, social sciences, and humanities, as well. Beyond direct applications, it is the first step in understanding the nature of computer science’s undeniable impact on the modern world. This course covers the first half of our book Computer Science: An Interdisciplinary Approach (the second half is covered in our Coursera course Computer Science: Algorithms, Theory, and Machines). Our intent is to teach programming to those who need or want to learn it, in a scientific context. We begin by introducing basic programming elements such as variables, conditionals, loops, arrays, and I/O. Next, we turn to functions, introducing key concepts such as recursion, modular programming, and code reuse. Then, we present a modern introduction to object-oriented programming. We use the Java programming language and teach basic skills for computational problem solving that are applicable in many modern computing environments. Proficiency in Java is a goal, but we focus on fundamental concepts in programming, not Java per se. All the features of this course are available for free. It does not offer a certificate upon completion.

课程标签

0人关注该课程

主题相关的课程