태그 보관물: computer-science

computer-science

오늘의 학생들에게 도달하기위한 입문 과정에 대한 좋은 과제는 무엇입니까? [닫은]

나는 정기적으로 Java를 사용하여 프로그래밍 과정을 소개합니다 . 나는 학생들에게 그들과 관련이 있거나 흥미로운 것을 찾을 수있는 흥미로운 과제 를주고 싶다 . 적어도 나는 이해가되고 내부 응집력이있는 과제를 원한다 (예를 들어, 아주 나쁜 프로그래밍 연습은 가장 최근에 다루어 진 프로그래밍 구조를 사용해야한다고 생각되는 것처럼 보인다).

범위에 대한 아이디어를 제공하기 위해 다루는 내용은 다음과 같습니다.

  • 할당은 외부 라이브러리를 사용하여 Java로 작성해야하지만 전체 프레임 워크가 아닌 간단한 API 여야합니다.
  • 변수, 프리미티브 및 문자열
  • 콘솔 입력 및 출력
  • if, for,while
  • 산술 및 논리 연산자
  • 선과 도형 그리기가 포함 된 간단한 그래픽
  • 정적 메소드
  • 1 차원 배열

학생들은 고급 주제 (예 : 재귀, 상속에 대한 강조)에 가지 않습니다. 따라서 저는 복잡한 프로젝트를 찾고 있지 않습니다 . “C 컴파일러를 작성해야합니다. 5 살 때 해냈으며 제가 배운 유일한 방법이었습니다!”

스코프보다 더 발전된 아이디어가 있다면 아래 링크가 아닌 “도전”질문에 게시하십시오.

대신, 내가 찾고있는 것은 짧은 프로그램으로 달성 할 수있는 흥미로운 아이디어입니다. 예를 들면 다음과 같습니다.

  • 학생들은 “Star Wars Name”Generator 의 콘솔 버전을 작성할 수 있습니다 . 이것은 효과적으로 문자열을 읽고 사용 substring하고 있지만 재미 있다고 생각합니다. 비슷한 변형은 ” 매드 립스 “프로그램입니다. 나는 이것을 5 년 전에 사용했으며 아마도 “이야기”일 것입니다.

  • 제공된 삼각대를 사용하여 학생들은 규칙적인 다각형을 그릴 수 있고 흥미로운 나선형 모양을 만들 수 있습니다.

  • 간단한 애니메이션 클래스를 사용하여 대부분의 코드를 제공하는 것도 의문의 여지가 없습니다. 간단한 API로 액세스 할 수있는 Twitter 또는 Facebook 서비스를 알고 있다면 매우 관심이 있습니다.

이 질문은 ” 초보자를위한 도전적인 Java 질문 “질문과 다릅니다 . 나는 도전 그 자체를 찾고 있지 않고 단지 흥미 롭습니다. 학생들이 “왜 누군가가 그것을 프로그래밍하고 싶어 할까?” 그러면 그들은 더 잘 배울 것입니다.

갤런 당 마일 계산과 같은 간단한 문제조차도 좋습니다. 보다 관련성있게 업데이트하는 방법이 있다면 더 좋습니다. 다른 곳 (도서 또는 웹 사이트)에서 운동을한다면 출처를 인용하십시오.

오늘날 전형적인 신입생에 대해 생각할 수 있도록 Beloit Mindset 목록을 확인하십시오 .



답변

제약 조건이 주어지면 Hangman 버전을 구현하는 것이 좋습니다. 이를 통해 학생들은 지나치게 복잡하지 않고 자신이 소개 한 모든 기술을 시연 할 수 있습니다.

과정이 진행됨에 따라 개발 프로젝트로 사용될 수도 있습니다. 예를 들어 문자열을 덮고 변수가 텍스트 버전으로 시작되면

예 :

You have 10 guesses left.      * * * E * * T
What is your next guess?

그런 다음 10 개의 추측이 카운트 다운 될 때 코드에서 잘라 내기 및 붙여 넣기 요소를 제거하기위한 루프를 도입합니다.

프로그래머를 모집하고 인터뷰 한 경험이있는 대부분의 다른 사람들과 마찬가지로, 대학에서이 수준의 수업료가 필요하다는 사실을 저에게 비난하지만, 아쉽게도 학교가 프로그래밍을 진지한 주제로 취급 할 때까지 계속 필요할 것입니다. 수학 또는 과학


답변

텍스트 어드벤처 게임처럼 들리는 것은 학기 중반에 훌륭한 과제가 될 수 있습니다. 나는 우리가 Colossal Cave Adventure를하게 한 다음 우리 자신의 게임을 만드는 수업을 가졌습니다. 그것은 초기에 많은 기본 구성을 가르쳐 주었고 모든 사람들이 그것에 참여하는 것이 너무 재미있었습니다.


답변

http://projecteuler.net/ 에서 하나 또는 두 개의 문제를 사용하는 방법 이 중 일부는 매우 흥미롭고이를 해결하기위한 프로그램을 작성하는 이점을 볼 수 있습니다. 그것들은 과제로 수행 할 수있을 정도로 작습니다. 내가 사용하고 싶은 또 다른 것은 $ 1.00 단어를 찾는 것입니다. 알라 파벳의 각 글자는 페니에서 그 가치가 있습니다 (예 : a = 1, b = 2). 얼마나 많은 $ 1.00 달러 단어를 찾을 수 있습니까? 여기에는 파일 i / o (사전 읽기), 배열, 반복 등이 포함될 수 있습니다.


답변

  • 독점 게임을 구현하십시오. 독점은 명백한 순서를 가지고 있으며, 아주 쉽게 함수로 나눌 수 있습니다. 또한 1 차원 배열과 몇 가지 기본 클래스 만 필요합니다. 이 논리는 학생들이 “무엇”보다 “어떻게”에 대해 더 많이 생각할 수있을 정도로 간단하며 다른 사람들에게 보여줄 수있는 결과를 가져옵니다.

  • 되돌릴 수있는 규칙으로 암호화 된 암호화 된 파일을주고 디코더를 작성하도록 요청하십시오 (단순하게 만드십시오). 이것은 메시지 내용에 대한 수수께끼 때문에이를 해결하기위한 추가 인센티브를 제공합니다.

  • 왜 당신이 왜 1 차원 배열만을 다루고 행렬이 아닌지 알지 못합니다 (실제로 그렇게 다르지는 않습니다).하지만 그것을 실라버스에 기꺼이 포함시키고 싶다면 Jon Conway의 Game of Life도 비교적 쉽고 결과가됩니다. 장난.

  • 체스와 같은 게임에는 약간의 생각이 필요하지만 초보자는 최소한의 상속 (특정 조각은 일반 클래스 Piece에서 상속되고 보드는 Piece 유형의 객체를 보유 함)과 2D 배열 (선택할 수 있음)로 여전히 할 수 있습니다. 적 조각이 캐슬 링 경로를 위협하는 경우 스텔라 테이트 탐지 또는성에 못 박힌 능력과 같은 단단한 물건을 구현할 필요가 없으므로 단순화하십시오.


답변

우리는 학교에서 I / O, 기능 및 조건부 연산자를 사용하여 상당히 많은 프로젝트를 만들었습니다. 객체 지향 프로그래밍에 대해 배우기 전에 모든 것이 완료되었습니다. 이 프로젝트들은 점점 더 어려워지기 위해 천천히 발전했습니다. 말할 것도없이, 우리가 매주 4 시간을 보낸다고해도 연말에는 거의 충분하지 않았습니다.

이 모든 프로젝트는 기능 및 i / o로 수행되었습니다.

  • 배우는 게임. 당신은 많은 막대기를 가지고, PC는 많은 막대기를 가지고 있습니다. 반복. 막대기를 든 마지막 사람이 느슨해집니다. 우리는 각 게임 후에 나아진 간단한 자체 학습 프로그램을 만들어야했습니다. 2D 배열을 배우는 좋은 예입니다.

  • 코드 차단기 당신은 시저 암호화를 알고, 글자를 고르고 글자의 값을 단어의 각 글자에 더합니다. 예 : 키 = ‘a’및 단어 = “비밀”. 이것은 “tfdsfq”가됩니다. 파일을 읽고 각 문자에 대한 빈도 표를 작성하여 수행 할 수 있습니다. 영어 성경도 읽어보십시오. 그런 다음 영어 알파벳에서 가장 많이 사용되는 문자가 ‘e’임을 확인하고 해결할 수 있습니다. 추가 된 과제 : 우리의 과제 인 ‘ab’와 같은 키를 사용하십시오. I / O를 이해하기위한 좋은 연습.

  • 바코드 메이커. 이 프로그램은 외부 라이브러리를 호출하는 연습이었습니다. 코드가 생겨서 바코드로 이미지를 생성해야했습니다. 외부 라이브러리를 사용하여 이미지를 생성했습니다.

  • 이동 영업 사원 문제를 해결하기위한 유전자 알고리즘. 이것은 2 명 또는 3 명을위한 더 진보 된 프로젝트였습니다. 임의 경로로 시작하면이 경로는 “좋은 경로”가 될 때까지 항상 향상됩니다. 보너스 : 경로가 포함 된지도를 만듭니다.

  • 작동하는 lzw 압축 프로그램 . 이것이 최종 4 명 프로젝트였습니다. 매개 변수는 매우 간단했습니다. “Zip file.txt file.zip”또는 이와 유사한 것. 재미있는 프로젝트이지만 lzw 알고리즘을 이해하는 데 시간이 걸렸습니다.


답변

계산기는 산술 연산을 배우기에 좋은 프로젝트입니다. 간단한 메뉴 기반 콘솔 앱 또는 GUI로 만들 수 있습니다. 네 가지 기능 (+,-, *, /)을 시작하고, 제곱근 등과 같은 더 복잡한 것들을위한 추가 포인트가 있습니다.

문자열 처리의 경우 몇 가지 유효성 검사 문제를 제안합니다. 이메일 주소를 염두에 두십시오. 체크하지 않은 상태로두면 SQL 인젝션 홀 또는 기타 문제가 발생할 수 있으며 검증하기가 비교적 간단합니다. 추가하기 위해 이름, 중간 이름 및 성을 공백으로 묶을 수있는 프로그램을 만들고 전체 이름을 사용하여 각 구성 요소로 구문 분석 할 수 있습니다. 첫 번째는 실제 생활에서 두 번째보다 많이 사용되지만 충분히 간단한 다른 구문 분석 시나리오를 생각할 수 없었습니다.

정적 메서드를 보여주기 위해 전자 메일 조회 문제를 할당 할 수 있습니다. 이름과 이메일 파일이 있으면 정적 생성자는 이름 / 이메일을 목록에 넣고 정적 메소드를 사용하여 지정된 이름의 이메일을 찾을 수 있습니다.

이것들이 당신에게 아이디어를 줄 수 있기를 바랍니다! 수업에 행운을 빕니다.


답변

과제에 대한 매우 흥미롭고 멋진 것은 Conway의 Game of Life 구현을 2D 로 작성하는 것입니다 . 기본 배열 데이터 구조에 매우 잘 매핑되며 재미 있고 쉽게 할 수 있지만 여전히 약간의 생각이 필요합니다. 호기심과 실험이 열릴 수도 있습니다 (AI).

고급 학생들은 추가 포인트를 위해 3D 버전을 작성할 수 있습니다.