急速なIT化の進行によってエンジニアが不足しており、情報系の学位を取得せずに独学やプログラミングスクールを通してエンジニアになる人も増えています。そうした人たちがコンピュータサイエンスを学ぼうとしたときにおすすめの分野や本・オンライン講義などが「teachyourselfcs.com」というサイトにまとめられています。 Teach Yourself Computer Science https://teachyourselfcs.com/ ◆コンピュータ・アーキテクチャ コンピュータが実際にどのように機能しているのかをしっかりとイメージできなければ、安定した抽象化を行うことはできません。この分野を学ぶのにおすすめなのは「コンピュータ・システム ~プログラマの視点から~」という本で、タイトルに「プログラマの視点から」とついている通り、高速で効率的で信頼性の高いソフトウェアを作成するという目的

こんばんみんみん。 バーチャル幼女プログラマーという肩書でインターネットをやっているきりみんちゃんというものです。 去年の7月に競技プログラミングのAtCoderを始めてだいたい1年くらい経ったので、勉強したこととかを振り返りたいと思います。 で、誰?YouTubeでAtCoderの過去問を解く配信をしたり、Twitterで無限にAtCoderについてつぶやいたりしているVTuberです。 普段の仕事での専門分野はAndroidアプリ開発です。 半年くらい前にAtCoderを普通の社会人エンジニアに布教するエントリを書きました。 また、技術書典で「AtCoderの歩き方 -数学が得意じゃないエンジニアにこそ競技プログラミングを布教したい!-」という本を出したりもしました。 現在のAtCoderコミュニティの中心層は理系の学生やもともと数学がかなり好きなタイプの人たちです。 一方きりみんちゃ

文字や概念だけでは理解しづらい機械学習のアルゴリズム。翔泳社では17種のアルゴリズムの仕組みを完全フルカラーで図解した『機械学習図鑑』を4月17日に発売しました。一覧性が高く理解度も深まるため、知らないアルゴリズムを学びたい方、リファレンスとして使いたい方などにお勧めです。 『見て試してわかる機械学習アルゴリズムのしくみ機械学習図鑑』は、種類が多く複雑な機械学習アルゴリズムの仕組みや使い方を図解で紹介する入門書です。 たとえば、教師あり学習の分類タスクに用いられるロジスティック回帰というアルゴリズムがありますが、その仕組みをきちんと理解するのは簡単ではありません。あるいはよく耳にするニューラルネットワークにしても同様です。機械学習のアルゴリズムには他にも主成分分析(PCA)やk平均法(k-means)など、初心者が仕組みを理解するのが難しいものがあります。本書では17種類のアルゴリズム

アルゴリズムを楽しく学ぼう! 独習に役立つWebサイト・参考書・競技プログラミングを紹介〈13選〉 プログラムの性能を改善して開発スピードを向上させるため、アルゴリズムを気軽に、かつ楽しく学べるWebサイトや書籍など、13種類のさまざまなコンテンツを紹介していきます。 アルゴリズム(algorithm)とは何なのでしょうか? 例えば、Wikipediaにはこうあります。 アルゴリズムとは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。 「問題を解くための手順を定式化した」とは、ソフトウェアエンジニアにとって「プログラミング」のことです。 みなさんも日々の開発業務において、問題(要件)を解くための手順を考え、その手順を特定のプログラミング言語で表現していませんか? アルゴリズムは、一般に「ソート(整列)」や「探索」と

2020年度から小学校でプログラミング教育が必修化されることになり、子供へのプログラミング教育に注目が集まっています。ここ2、3年で、子供向けのプログラミング教室が急増し、子供のプログラミング教育に関する教材や書籍なども多数販売されています。 小学生と中学生の子供を持つ親として、筆者も子供のプログラミング教育やSTEM教育には以前から関心があり、プログラミング教育に力を入れている学校やプログラミング教室、プログラミング関連イベントなどの取材を行ってきました。また、2016年夏からは、地元で開催されている子供を対象としたプログラミング道場「CoderDojo守谷」のメンターとして、子供たちにプログラミングを教えるお手伝いをしています。 そこで、子供へのプログラミング教育に関心がある方や、小中学生のお子さんをお持ちの方のために、最新の子供向けプログラミング事情を紹介したいと思います。 今回は前

Last Updated on: 2018年8月13日前のエントリでStackExchangeがReDoSで攻撃されサイトがダウンした問題を紹介しました。少しだけ掘り下げて見たところ、正規表現だけでメールアドレスをチェックしている場合、壊滅的なReDoS(十分短い文字列で指数関数的に実行時間が増加する)が可能なことが判りました。 結論を書くと、正規表現でのメールアドレスチェックは見直すべき、です。(特にRubyユーザー) 追記:影響範囲はメールアドレスチェックに限らないので、正規表現チェックは全体的に見直さないと、どこが脆弱なのか判りません。見直してチェックしたとしても、それが完全であったと保証することは困難です。ネット検索して直ぐに見つかった検索パターンは非常に脆弱であったこと、メールアドレスのマッチパターンは脆弱になりやすい繰り返しの繰り返しが含まれること、これらがあったのでタイトルが

みなさんは何のためにプログラミングをしていますか?仕事のため、何かをつくるため。 それも良いけれど、「強くなる」ためにプログラミングしてみませんか。 様々なジャンルのプログラミングコンテストとまだ見ぬライバルたちがあなたを待っています。 今回はアルゴリズム/AI/機械学習/セキュリティ等の様々なジャンルのコンテストとその始め方について紹介したいと思います。 ※これはPyConJPでの発表を文字におこしたものです。が、Pythonの話は殆どないです。 プログラミングコンテストとは? すべてのコンテストに共通する、「コンテストに参加する利点」 1. 自分と同じ問題を解いた、他の人の解法を知ることができる 2. 同じコンテストに出ていた、たくさんのライバルと知り合える アルゴリズムのコンテスト 問題1 問題2TopCoder Single Round Match CodeForces AtC

Photo by Oferico 皆さんはアルゴリズムやデータ構造について勉強したことはありますか?そして、基本的なアルゴリズムについて、どのようなものがあって、どのようなときに使うとよいかといったことを説明することができますか?仕事をしていると、プログラミング言語等の勉強や業務に忙しくて、正直アルゴリズムどころではないという場合がほとんどでしょう。しかし、いつか勉強しようと思っていたけど、基本的なアルゴリズムにどんなものがあるのかなんて今更聞けないな……ということもあるかと思います。 今回はそんな方に向けて、基本的なアルゴリズムの一部の概要に加え、アルゴリズムの勉強に役立つサイト、書籍をご紹介したいと思います。 ■アルゴリズムを学ぶ意味 例えば、ソート等については、通常はすでにソート関数があるので、自分で作らなくても済む=アルゴリズムも勉強しなくていいと思ってしまうかもしれません。しか

Photo by Anders Sandberg こんにちは、谷口です。 皆さんは、アルゴリズムの勉強はどのようにしていますか? 情報系の学部出身の方は授業で勉強したことがあるかもしれませんが、文系の方や、プログラミングの業務経験のない方は、「そういえばちゃんと勉強したことない」という方も多いかと思います。(私もかつてそうでした……) アルゴリズムとは、「問題を解くための手順を定式化した形で表現したもの」のことです。例えば、複数のデータを並べ替えるソートの方法として、バブルソートやヒープソートといったアルゴリズムがあるということは、アルゴリズムをきちんと勉強したことがなくても、知っている方は多いかと思います。 仕様書の通りにコーディングをしていくだけの業務であれば、アルゴリズムを勉強する必要はないかもしれません。さらに前述のようなソート等に関しては、多くの場合既に関数が用意されており、アル

アルゴリズムを理解するのにビジュアル化することは非常に有効で、プログラムをビジュアル化することで理解が進むのもまた同じ。そこで、アルゴリズム・プログラミングの理解が進むようにと、アルゴリズムを記述したプログラムコードを一挙にビジュアル化することで、アルゴリズム&プログラミングを同時に学習できる一挙両得なサービス「VisuAlgo」が公開されています。 VisuAlgo - visualising data structures and algorithms throughanimation https://visualgo.net/en 上記のVisuAlgoサイトで試しにソートアルゴリズムの基本プログラム「バブルソート」をビジュアル化してみます。「Sorting」の「bubble」をクリック。 検索窓の下に「bubble」と表示されたのを確認したら「Sorting」の画像をクリック。

2: デフォルトの名無しさん 2013/12/06(金) 18:14:19.55 アルゴリズムを考えるのは難しいけど、人の考えたアルゴリズムを理解するのは簡単だろ? 11: デフォルトの名無しさん 2013/12/06(金) 21:20:04.12 0から作ったものが既存の物であるのはよくある。 12: デフォルトの名無しさん 2013/12/06(金) 21:29:21.15 だいいち、ゼロから作るなんてできっこない 13: デフォルトの名無しさん 2013/12/06(金) 23:59:51.50 ゼロからアルゴリズムを作るなんてクヌース先生レベルの天才じゃないと無理 9: デフォルトの名無しさん 2013/12/06(金) 20:19:47.80 そこが面白いんだろ 人が考えたものを実装するだけとか死にたくなるよ 10: デフォルトの名無しさん 2013/12/06(金) 21:16

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? オバマ大統領の再選に大きく寄与したことで大きな注目を集めているA/Bテスト。A/Bテストを導入した、することを検討している、という開発現場も多いのではないだろうか。 そんな中、Web上で次のような議論を見つけた。 20lines of code that will beat A/B testing every time Why multi-armedbandit algorithm is not “better” than A/B testing 一言でまとめると「A/Bテストよりバンディットアルゴリズムの方がすごいよ」「いやいやA

著者の定義によると、アルゴリズムとは「問題を解決するために必要な手順を正確に規定したレシピ」である。コンピュータ・サイエンスを専門とする大学教授の手による本書は、現在当たり前のように使われている偉大なコンピュータ・アルゴリズムがなぜ必要とされたのか、どのように考え出されたか、そして、それが実際にどのような仕組みで動いているのかを教えてくれる。 このように紹介すると、コンピュータやプログラミングが苦手な人は手が遠のいてしまうかもしれないが、どうかご安心を。本書を楽しむのに、コンピュータプログラミングやコンピュータ科学の知識は必要ない。必要なのはじっくりと考えることだけだ。 一口にサイエンス本といっても面白いポイントはそれぞれに異なるが、本書の面白みは間違いなく、過去の偉人たちの難問への挑戦を疑似体験できるところにある。その面白みを満喫するためにも、頭から煙を出しながらじっくりと考えながら読む

2011年7月22日から29日にかけて、IOI2011 (詳細は後述) がタイで開催されます。 以下の4名が日本代表として参加します。 村井 翔悟 (開成) 原 将己 (筑駒) ←自分です 今西 健介 (八千代松陰) 城下 慎也 (灘) 以下では、IOIに関してひと通り説明したあと、今年行われるライブ映像の配信とスコアボードの公開について説明します。 ぜひ見てね! 国際情報オリンピック(IOI)とは? 国際情報オリンピック(IOI)は、高校生向けの国際科学オリンピック*1の一つで、数理情報科学(Informatics)*2に関する知識、アルゴリズムの洞察力やプログラミングの能力を競うコンテストです。 ありていに言ってしまえば、TopCoderやICPCに代表される「(競技)プログラミングコンテスト」の一つと言えます。 日本では日本情報オリンピック(JOI)が実施され、選抜合宿で最も成績の良
動的計画法とメモ化再帰 今回は、非常によく用いられるアルゴリズムである、「動的計画法」「メモ化再帰」について説明します。この2つはセットで覚えて、両方使えるようにしておくと便利です。 なお、メモ化再帰に関しては、第5・6回の連載の知識を踏まえた上で読んでいただけると、理解が深まります。まだお読みになっていない方は、この機会にぜひご覧ください。中学受験などを経験された方であれば、こういった問題を一度は解いたことがあるのではないでしょうか。小学校の知識までで解こうとすれば、少し時間は掛かるかもしれませんが、それでもこれが解けないという方は少ないだろうと思います。 この問題をプログラムで解こうとすると、さまざまな解法が存在します。解き方によって計算時間や有効範囲が大きく変化しますので、それぞれのパターンについて考えます。 以下の説明では、縦h、横wとして表記し、プログラムの実行時間に関しては、

トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター:最強最速アルゴリズマー養成講座(1/4 ページ) プログラミングにおける重要な概念である「探索」を最速でマスターするために、今回は少し応用となる探索手法などを紹介しながら、その実践力を育成します。問題をグラフとして表現し、効率よく探索する方法をぜひ日常に生かしてみましょう。 まだまだ活用可能な探索 前回の「知れば天国、知らねば地獄――『探索』虎の巻」で、「探索」という概念の基礎について紹介しました。すでに探索についてよく理解している方には物足りなかったかと思いますが、「問題をグラフとしてうまく表現し、そのグラフを効率よく探索する」というアルゴリズマー的な思考法がまだ身についていなかった方には、得るものもあったのではないでしょうか。 前回は、「幅優先探索」と「深さ優先探索」という、比較的単純なものを紹介しましたが

いよいよ今回から、具体的なアルゴリズムの紹介に入っていきます。今回は、プログラミングにおける重要な概念である「探索」について考えます。グラフに変換し、探索する、という流れを知るとともに、そのグラフを効率よく探索する方法について紹介します。 今後紹介していくアルゴリズムについて お待たせしました! 「最強最速アルゴリズマー養成講座」という連載タイトルのとおり、今回の連載からいよいよ具体的なアルゴリズムの紹介に入っていきたいと思います。 しかし、それを読んでいただく前に、1つ注意してもらいたいことがあります。連載第3回でもお伝えしたように、「問題を、既存の適当なアルゴリズムに当てはめる」という考え方は、非常に危険である、ということです。 筆者の経験上、TopCoderでRedCoder以上を目指すのであれば、回答時間短縮のために、いままでのパターンを利用するのも方法の1つなのですが、本連載では

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く