Sharing tentang Programming Competition

733 views
Skip to first unread message

Felix Halim

unread,
May 16, 2006, 9:20:34 AM5/16/06
to tekno...@googlegroups.com, cs20...@yahoogroups.com, binus_int...@yahoogroups.com, tbud...@binus.ac.id, Raymond Kosala, Steven Halim, jimmy....@bic.co.id
On 5/16/06, m.c. cptrwn <cpat...@gmail.com> wrote:
> sebaiknya untuk pemenang kompetisi google etc seperti Felix, sharing
> dong bagaimana soal2nya, berapa lama ujianya, cara belajarnya bagaimana
> ? jadi bermanfaat buat semua.

Saya tahu kompetisi TopCoder dari turuthok (Lego Haryanto). Kalau
dilihat dari statisticsnya, turuthok udah mengikuti TopCoder sejak
awal2 TopCoder berdiri:

http://www.topcoder.com/tc?module=MemberProfile&cr=152614

Berikut ini email dari turuthok yang menggambarkan seperti apa
kompetisi TopCoder (termasuk semua Google Code Jam -> karena pake
engine TopCoder):

On 5/16/06, turuthok <legoha...@gmail.com> wrote:
> Soal-soal yg dipakai di Google Code Jam adalah masalah fiksi, tapi
> tidak jarang adalah juga model dari permasalahan di dunia nyata. Yang
> jelas, peserta mesti jeli untuk melihat kompleksitas problem tersebut
> dan bisa memilih teknik algoritma yg tepat untuk "attack the problem"
> sesuai kriteria penilaian.
>
> Kompetisi yang dimenangkan Sindu cenderung lebih terpakai dalam bidang
> software. Peserta diberikan design document yg sudah disetujui untuk
> sebuah component, dan diminta untuk mengimplementasikannya menggunakan
> Java atau C#. Sebenarnya, saya melihat kompetisi ini sungguh cocok
> untuk mahasiswa-mahasiswa teknik informatika yg ingin maju dan melihat
> bagaimana software engineering itu tidak semata-mata "coding" saja,
> tetapi juga mementingkan aspek-aspek lain. Paling tidak, mahasiswa
> akan lebih siap memasuki dunia kerja yang berurusan dengan development
> beginian. Saya yakin setiap peserta akan terbiasa memakai tools-tools
> yg dipakai dalam kontes ini. Mungkin metodologi atau development
> life-cyclenya sederhana, tetapi kita mesti melihat dalam kacamata
> kontes, dan mungkin dari pihak penyelenggara, model inilah yang paling
> ampuh untuk menilai kualitas design dan implementasi para peserta.
>
> TopCoder (www.topcoder.com/tc) adalah site yg mengadakan kontes-kontes
> seperti di atas. Buat yang ingin memoles keahlian algoritma, boleh
> mencoba algorithm contest. Indonesian coders di bidang ini masih
> berada di peringkat 20 (peringkat tertinggi: Ardian Kristanto Poernomo
> yg juara Google India Code Jam 2x berturut-turut). Walaupun banyak
> orang yg menganggap algorithm contest ini tidak penting, sebenarnya ada
> banyak manfaat dari mengikuti kontes ini. Lambat laun, coder jadi
> makin kritis dalam mendekati suatu masalah algoritmis. Model yg
> dipakai TopCoder sungguh mirip dengan model unit-testing yg sering kita
> pakai. Coders jadi lebih jeli dalam menganalisis suatu problem yang
> mengandung tricky atau boundary cases, kompleksitas run time ataupun
> space, dan sebagainya.
>
> Yang jelas kedua jenis kontes di atas perlu jam latihan yang tidak
> sedikit. Sindu sendiri mengaku kurang tidur dalam marathon-nya
> mengikuti TopCoder Development Contest baru-baru ini.

Saya sendiri hanya mengikuti Algorithm competitionnya TopCoder (yang
digunakan oleh Google Code Jam adalah Algorithm Competition arenanya
TopCoder). Sedangkan untuk yang bagian Component Design and
Development (yang dimenangkan sindu) saya tidak ikuti. Jadi untuk hal
ini sindu lebih bisa berbicara banyak.

Untuk TopCoder Algorithm competition itu mirip dengan Programming
Contest yang deselenggarakan macamnya:

IOI (International Olimpiad in Informatics)

http://en.wikipedia.org/wiki/Ioi

atau

ACM ICPC (Intenational Collegiate Programming Contest):

http://en.wikipedia.org/wiki/ACM_ICPC


Di Indonesia ada organisasi yang namanya TOKI (Tim Olimpiade Komputer
Indonesia) -> Saudaranya TOMI, TOBI, TOFI, TOKIMI, etc... yang
tujuannya adalah menyeleksi anak2 Indonesia untuk di kirim sebagai
duta untuk kompetitisi IOI.

Nah, biasanya anak2 yang terpilih ini akan suka sekali dengan
Programming Contest, otomatis pada akhirnya, setelah lulus SMA anak2
ini akan ikut ACM ICPC (mewakili universitasnya untuk bertanding
Programming Contest).

TopCoder/GCJ itu gak beda jauh dengan programming contest seperti IOI
maupun ACM ICPC, bedanya paling adalah tujuannya (untuk cari kerja +
utilize programmers around the world untuk develop project2nya
TopCoder).

TopCoder merasa bahwa orang2 yang sudah sering ikut programming
contest (yang otomatis akan berjaya di TopCoder Algorithm programming
contest) itu akan jauh lebih produktif daripada mereka yang cuman
"average". Bahkan di CNN pernah memberitakan bahwa orang yang "top" di
TopCoder itu productivitynya hampir 10x lipat dari orang yang
"average".

Untuk sukses di programming contest seperti ini, akan sulit kalau
tidak dipupuk sejak kanak-kanak. Sebab ada beberapa tahap yang perlu
dilalui sebelum bisa benar2 menjadi yang terbaik. Contohnya orang
tersebut harus kuasai dulu Programming Language (PASCAL ato C++
misalnya), lalu sudah pasti harus latihan solving problems (di
http://acm.uva.es/p misalnya). Perlu diketahui bahwa solving problems
ini memakan waktu yang lama (bertahun-tahun) -> kecuali buat yang
genius. Kemudian, harus juga banyak baca buku algorithms tentang
"cara-cara" nge solve problems seperti Greedy, Graph, Dynamic
Programming, Network Flow, Recusion/Memoization. Ini semua sangat
tidak gampang. Setelah itu, mereka juga harus mengasah "gaya" coding
mereka, sehingga algorithms yang mereka pikirkan bisa di-coding dengan
singkat. Ini sangat mengejutkan untuk pemula yang melihat coding orang
pro, karena pemula bisa coding 100 baris dan programnya ngaco tetapi
yang pro bisa coding hanya dalam 10 baris tapi bener dan running
timenya sangat cepat! (saya sesuain 10x productivitynya :P). Tapi
benar, hal seperti ini sangat terlihat di programming contest. Step
terakhir yang sangat sulit adalah... coding it IN TIME. Semua problem
di programming contest pasti bisa diselesaikan oleh siapapun, yang
membedakannya adalah: berapa lama orang tersebut mengerjakannya.
Sebagai contoh, juara 1 Algorithm TCO06 (Petr) itu bisa menyelesaikan
problem 1000 yang menurut analysis Kawigi (expert) adalah problem yang
impossible untuk dikerjakan oleh average anak lulusan S1. Tapi Petr
bisa mengerjakannya dalam 1 jam, ups dalam 1 jam Petr menyelesaikan
problem 250, 500, dan 1000 SEKALIGUS! Mungkin untuk saya dan yang lain
butuh berhari-hari untuk mengerjakannya, bahkan untuk mengerti
soalnya!!

IMHO, masa-masa untuk mengasah programming skills yang paling baik
adalah waktu SD/SMP/SMA. Sebab kalau kuliah, itu rasanya sudah
terlambat (meski ada pepatah It's never too late to learn). Sebab,
waktu kuliah orang tersebut sudah harus masuk tahap "pro". Apalagi
kalo setelah kuliah, kerjaannya itu cari nafkah, mana sempet ngasah
programming skills lagi? Meskipun di tempat kerja juga kerjanya
programming, tapi programming di tempat kerja berbeda dengan yang di
programming contest. Untuk perbedaannya saya tidak tahu detailnya
(mungkin turuthok bisa menjelaskan? karena sudah kerja + juga masuk
World Final ACM ICPC :)

Saya sendiri baru start learning programming dari SMA (ketelatan!)
harusnya dari SD baru bisa jago banget. Waktu SMA juga saya hoki
dikenalin ama programming ama koko saya (Steven Halim) :D kalo enggak,
saya gak bisa juara Google Code Jam seperti sekarang ini. Dan hal ini
juga berkaitan berat dengan hobby. Kalo gak hobby programming kayak
hobby sepakbola, gak bakal bisa deh juara di programming contest (bisa
sih, tapi sulitt + makan ati).

Untuk yang berminat mendalami programming contest, bisa lihat sekilas
+ nyoba2 tutorial yang saya buat untuk training BNPCCS di Binus
International:

http://felix-halim.net/oj/tutorials.php

Tutorialnya masih berjalan + ini hanya getting started. Tutorial itu
berlaku juga untuk ACM ICPC.

Kalau mau latihan untuk IOI yah kepaksa googling tentang IOI. Kalau
mau menang di Google Code Jam ato TopCoder Open, yah latihan di:

http://www.topcoder.com/tc

Register, lalu ikutin SRM nya biasanya SETIAP minggu. Kalo rating bisa
sampe warna merah ato "target", wah udah dipastiin masuk finalist
Google Code Jam deh ato TopCoder Open ato World Finalist di ACM ICPC
ato Gold Medal di IOI :D

Good Luck buat yang mau bertanding di dunia programming competition.
FYI, suasana di TopCoder Open itu seperti suasana World Cup!! :

http://webreprints.djreprints.com/1466111183234.html

Felix Halim

Dicky Arinal

unread,
May 16, 2006, 12:50:30 PM5/16/06
to tekno...@googlegroups.com
Sebenarnya saya pingin tau.. misalkan Alan Turing ikutan kompetisi kayak ginian, apa dia bisa menang? Masalahnya ada pada waktu sih.. sempit sekali. Kalau real world problem kan bisa di solve dengan waktu yang manusiawi CMIIW.

Lix, kamu kalau baca buku kayak MIT Press' Intro to Algorithm atau Donald Knuth's Algorithm apakah definisi2 formal penuh dengan persamaan matematikanya juga dilahap?

Ikhlasul Amal

unread,
May 16, 2006, 6:42:00 PM5/16/06
to tekno...@googlegroups.com
On 5/16/06, Dicky Arinal <dicky....@gmail.com> wrote:
> Sebenarnya saya pingin tau.. misalkan Alan Turing ikutan kompetisi kayak
> ginian, apa dia bisa menang? Masalahnya ada pada waktu sih.. sempit sekali.
> Kalau real world problem kan bisa di solve dengan waktu yang manusiawi
> CMIIW.

Coba lihat perjalanan "karir" penyanyi atau musisi:
- ada yang menjadi sohor lewat festival (dulu Harvey Maleiholo sampai
dapat predikat "penyanyi festival");
- ada yang bakatnya ditemukan oleh produser;
- ada yang berkesenian lewat "petualangan" dari panggung ke panggung
(artis Kyai Kanjeng dan seniman pentas jalanan misalnya);
- tidak kurang juga yang berkarir "dalam sunyi" jauh dari hiruk-pikuk
industri massal musik seperti para jago gitar;
- ... dan lain-lain masih banyak.

Jadi tidak menjadi masalah jika Alan Turing gagal dalam kompetisi
seperti ini, seperti halnya setiap pemrogram punya jalan masing-masing
untuk menikmati dunianya. :)

--
amal

Felix Halim

unread,
May 20, 2006, 12:52:41 PM5/20/06
to tekno...@googlegroups.com
On 5/16/06, Dicky Arinal <dicky....@gmail.com> wrote:
> Sebenarnya saya pingin tau.. misalkan Alan Turing ikutan kompetisi kayak
> ginian, apa dia bisa menang? Masalahnya ada pada waktu sih.. sempit sekali.
> Kalau real world problem kan bisa di solve dengan waktu yang manusiawi
> CMIIW.

Problem2 yang di design di programming contest itu solvable untuk
waktu yang dikasih. Kalau alasannya adalah waktunya sempit, semua
contestant juga mempunyai waktu yang sempit yang sama :D, sekarang
tinggal masalah siapa yang bisa memanfaatkan waktu yang sempit
tersebut untuk memikirkan solusi dari problem tersebut dan code it
without a single error. Yup, without bug (the output must be match
exactly to the given format).

Tapi biasanya untuk dapet solusinya aja udah setengah mati, banyakan
bengong-bengong buangin waktu mikirin solusinya :D, setelah dapet,
codingnya sebentar paling 30 barisan.

> Lix, kamu kalau baca buku kayak MIT Press' Intro to Algorithm atau Donald
> Knuth's Algorithm apakah definisi2 formal penuh dengan persamaan
> matematikanya juga dilahap?

Saya baca buku Intro to Algorithms by CLR, persamaan matematikanya
saya baca semampu saya. Kalo gak ngerti diskip.. mudah2an beberapa
tahun lagi mengerti maksudnya apa :D

Kalo Donald Knuth itu udah jereng deh bacanya, keliatannya teralu
dalem. Yang Intro to Algorithms itu jauh lebih manusiawi.

Itu buku cocok tuch untuk programming contest sebagai background +
collection of algorithms.

Kalo mau dapet tips lebih banyak lagi, lihat website koko saya:

http://www.comp.nus.edu.sg/~stevenha/programming/acmoj.html

disitu direkomendasiin buku2 yang bagus untuk programming contest,
serta beberapa hints untuk solving problems di UVA
(http://acm.uva.es/p).

Felix Halim

m.c. cptrwn

unread,
May 20, 2006, 1:05:47 PM5/20/06
to teknologia
Felix Halim wrote:
> On 5/16/06, Dicky Arinal <dicky....@gmail.com> wrote:
> > Sebenarnya saya pingin tau.. misalkan Alan Turing ikutan kompetisi kayak
> > ginian, apa dia bisa menang? Masalahnya ada pada waktu sih.. sempit sekali.
> > Kalau real world problem kan bisa di solve dengan waktu yang manusiawi
> > CMIIW.
>
> Problem2 yang di design di programming contest itu solvable untuk
> waktu yang dikasih. Kalau alasannya adalah waktunya sempit, semua
> contestant juga mempunyai waktu yang sempit yang sama :D, sekarang
> tinggal masalah siapa yang bisa memanfaatkan waktu yang sempit
> tersebut untuk memikirkan solusi dari problem tersebut dan code it
> without a single error. Yup, without bug (the output must be match
> exactly to the given format).
>
> Tapi biasanya untuk dapet solusinya aja udah setengah mati, banyakan
> bengong-bengong buangin waktu mikirin solusinya :D, setelah dapet,
> codingnya sebentar paling 30 barisan.
>

Hmmm, cuman 30 baris ? lalu bagaimana si judge bisa menentukan siapa
yg paling baik jika jawabanya singkat ? Apakah soal2nya sedikit banyak
pernah dibahas di buku tertentu ?

Oh ya, hambatan di bidang programming contest ini apa sich ? Apakah
Fokus untuk persiapan ? stress menghadapi unpredictable questions ?

Saya lihat kontesnya "mirip2" dengan ccie labs dimana mikir untuk
solusinya yg lama sementara waktu yg diiberikan singkat. cmiiw.

-mcp

Felix Halim

unread,
May 20, 2006, 10:57:27 PM5/20/06
to tekno...@googlegroups.com
On 5/21/06, m.c. cptrwn <cpat...@gmail.com> wrote:
> Hmmm, cuman 30 baris ? lalu bagaimana si judge bisa menentukan siapa
> yg paling baik jika jawabanya singkat ? Apakah soal2nya sedikit banyak
> pernah dibahas di buku tertentu ?

Untuk menentukan suatu program benar atau salah, Judge menggunakan
Test Cases (just like how developers testing their program). Jadi juri
biasanya punya Test Cases yang bisa mengeksploitasi bug di problem
tersebut. Nah, jika peserta mengirim solusinya, si judge tinggal
nge-run saja program dari si peserta, lalu dimasukkan input test cases
dari juri. Jika semua test cases lolos, maka program peserta tersebut
dianggap benar. Peserta mendapat nilai untuk problem tersebut.

contoh soal "gampang" yang bisa disolve dalam < 30 baris:
soal: http://acm.uva.es/p/v4/424.html
jawaban : http://felix-halim.net/oj/424.php

satu lagi yang menarik, house of santa claus untuk belajar recursion:
soal: http://acm.uva.es/p/v2/291.html
jawaban: http://felix-halim.net/oj/291.php

tapi biasanya problem2 yang ada di TopCoder itu requires Dynamic
Programming kayak soal Arbitrage ini (susah):
soal: http://acm.uva.es/p/v1/104.html
jawaban: http://felix-halim.net/oj/104.php

Untuk soal tipe2 lainnya (Recursion, BFS, Graph), bisa diliat di:
http://felix-halim.net/oj/tutorials.php

Btw, 30 LOC yang saya maksud itu untuk coding "algonya", saya tidak
menghitung LOC untuk baca inputnya. Kalo mo diitung keseluruhan,
biasanya 60 baris (30 barisnya itu coding algo nya, 30 baris lagi itu
coding untuk baca input).


> Oh ya, hambatan di bidang programming contest ini apa sich ? Apakah
> Fokus untuk persiapan ? stress menghadapi unpredictable questions ?

Hambatan di bidang programming contest adalah (IMHO):
1. kurangnya waktu latihan
skill untuk sukses si programming competition gak jauh beda dengan
skill yang dibutuhkan untuk sukses di dunia sepakbola (kebetulan saya
penggemar bola juga).

jadi, untuk suatu pemain sepakbola supaya sukses, dibutuhkan latihan
yang intensif, dan biasanya sejak anak2 sudah dilatih cara gocek, cara
dribble, cara nge-shoot, cara team-works, oper one-two, etc...
sehingga pas masa2 gemilangnya menjadi yang terbaik.

untuk programming contest (PC) pun begitu. cara ngesolve problem
Greedy, cara ngesolve problem Graph, problem Net-flow, problem Dynamic
Programming, problem Ad-Hoc, etc... nah semakin banyak latihan, maka
akan semakin mahir dalam "menggocek bola", dalam PC akan semakin cepat
dia bisa nge solve problem (otomatis jumlah problems yang bisa di
solve semakin banyak, dan problem yang susah bisa dikerjakan dengan
gampang oleh yang skillful ini).

2. Fasilitas kurang memadai & kurangnya publikasi

Di Indo hanya segelintir) anak2 indo yang tahu PC sejak waktu SMA
(yang mengikuti Tim Olimpiade Komputer Indonesia). Beberapa pada tahu
PC sejak masuk Kuliah dan sisanya biasanya gak ada yang tahu apa itu
PC... (coba bikin polling di milist ini, siapa yang tahu ttg PC, siapa
yang enggak). -> ini gara2 kurangnya publikasi... berita berita di
indo kebanyakan berita selebritis, berita orang ngerampok, pembunuhan,
etc... sampe saya aja males bukanya. Masih belum ada suatu media kayak
"koran PC" -> kalo "koran bola" udah banyak :D

Kalaupun publikasinya sudah mantap, udah ada "Koran Programming
Contest" tapi itu pun belum cukup. Coba saja hitung berapa banyak anak
SMA yang punya komputer pribadi dirumah dan bisa internet untuk
solving problems di UVA? ato di TopCoder tiap minggu (gak harus hari
minggu loh yah)? -> nah kalo ini kurang fasilitas.


3. sangat sedikit peminatnya

Hanya geek yang suka. di binus sendiri aja peminatnya dikit sekali,
padahal mahasiswa computer science nya ribuan. FYI, PC ini sebenarnya
adalah mempertandingkan skills2 yang didapet dari courses yang ada di
universitas: kayak course Data Structure & Algorithms, course
Artificial Intelligence, Number Theory, Numerical Methods, Linear
Algebra, C Programming, etc...

Heran banget kenapa pada gak suka PC. pada sukanya main game CS, Dota,
sekarang ada apa lagi tuh yang baru... pokoknya tembak tembakan
gitulah, gebuk2an, serang sana serang sini.

Kayaknya butuh banyak "seminar" tentang PC agar masyarakat indo
mengerti apa itu PC, dan mulai menyukai PC seperti menyukai game
tembak tembakan babi buta gitu. Kalao bisa seperti ini, semua hambatan
hilang deh.


> Saya lihat kontesnya "mirip2" dengan ccie labs dimana mikir untuk
> solusinya yg lama sementara waktu yg diiberikan singkat. cmiiw.

Saya gak tahu gimana kontest ccie..


Felix Halim

Dicky Arinal

unread,
May 20, 2006, 11:59:13 PM5/20/06
to tekno...@googlegroups.com
On 5/21/06, Felix Halim <felix...@gmail.com> wrote:
Untuk menentukan suatu program benar atau salah, Judge menggunakan
Test Cases (just like how developers testing their program). Jadi juri
biasanya punya Test Cases yang bisa mengeksploitasi bug di problem
tersebut. Nah, jika peserta mengirim solusinya, si judge tinggal
nge-run saja program dari si peserta, lalu dimasukkan input test cases
dari juri. Jika semua test cases lolos, maka program peserta tersebut
dianggap benar. Peserta mendapat nilai untuk problem tersebut.

Bukan generate random cases yah?

Hanya geek yang suka. di binus sendiri aja peminatnya dikit sekali,
padahal mahasiswa computer science nya ribuan. FYI, PC ini sebenarnya
adalah mempertandingkan skills2 yang didapet dari courses yang ada di
universitas: kayak course Data Structure & Algorithms, course
Artificial Intelligence, Number Theory, Numerical Methods, Linear
Algebra, C Programming, etc...

Hehhe.. ga usah maksa common people untuk menyukai hal2 teknis.. hal2 teknis itu high barrier to entry, cuma utk beberapa orang dan sebagian (besar) orang universitas itu cuma mau cari nilai, mana ada yang suka ama numerical methods, calculus, algebra.. beberapa dari mereka mungkin dapet A, tapi 'A' nya itu yaa cuma buat ujian aja. Saya rasa ini berlaku global, ga cuma di Indo.

Kalau suatu saat pemrograman menjadi populer di Indonesia, nanti tidak ada Indonesian Idol, adanya Indonesian Coder, yang jadi jurinya tokoh IT Indonesia kayak Pak BR, Pak Onno, dan mungkin kalo Pak Patriawan kalau sudah pulang dari SV.. :)

Heran banget kenapa pada gak suka PC. pada sukanya main game CS, Dota,
sekarang ada apa lagi tuh yang baru... pokoknya tembak tembakan
gitulah, gebuk2an, serang sana serang sini.

Jangan salah, seandainya ada orang yang kenal programming sejak kecil, alasannya pasti mau buat game. Dan game keluaran terbaru kayak Gears of War tentu saja menggunakan teknologi grafis terkini. Bermain game memang menyenangkan, but the effort to create a game is no picnic.

Kayaknya butuh banyak "seminar" tentang PC agar masyarakat indo
mengerti apa itu PC, dan mulai menyukai PC seperti menyukai game
tembak tembakan babi buta gitu. Kalao bisa seperti ini, semua hambatan
hilang deh.

Ada banyak orang suka PC, tapi belum tentu suka pemrograman, dan beberapa orang yang suka pemrograman belum tentu suka computer science. Cuma creame de la creame yang mengetahui dyamic programming, memoization, automata dan sebagainya.

regards,

Dicky Arinal

Budi Rahardjo

unread,
May 21, 2006, 1:29:22 AM5/21/06
to tekno...@googlegroups.com
On 5/21/06, Dicky Arinal <dicky....@gmail.com> wrote:
...

> Kalau suatu saat pemrograman menjadi populer di Indonesia, nanti tidak ada
> Indonesian Idol, adanya Indonesian Coder, yang jadi jurinya tokoh IT
> Indonesia kayak Pak BR,
...

Coding itu binatang yang berbeda. Jadi belum tentu saya cocok
untuk menjadi juri coding lho. Sekarang saja masih belajar coding lagi.
:)
Poin saya, jangan kita terpengaruh dengan publisitas yang menganggap
IT itu sama semua. Selebriti IT seperti saya ini harus di-qualify dulu :)
Jangan-jangan hanya ngomong doang. he he he.

-- budi

Felix Halim

unread,
May 21, 2006, 2:21:40 AM5/21/06
to tekno...@googlegroups.com
On 5/21/06, Dicky Arinal <dicky....@gmail.com> wrote:
> On 5/21/06, Felix Halim <felix...@gmail.com> wrote:
> > Untuk menentukan suatu program benar atau salah, Judge menggunakan
> > Test Cases (just like how developers testing their program). Jadi juri
> > biasanya punya Test Cases yang bisa mengeksploitasi bug di problem
> > tersebut. Nah, jika peserta mengirim solusinya, si judge tinggal
> > nge-run saja program dari si peserta, lalu dimasukkan input test cases
> > dari juri. Jika semua test cases lolos, maka program peserta tersebut
> > dianggap benar. Peserta mendapat nilai untuk problem tersebut.
>
> Bukan generate random cases yah?

Biasanya Test Cases yang paling menjebak tidak tergenerate dari Random Cases :D

Di TopCoder, ada satu session khusus namanya "Challenge Phase" dimana
sesama coder bisa nge-challenge coding coder lain, dengan cara
memberikan TestCase ke program orang yang mau di challenge... Kalo
programnya outputnya ngaco, berarti "Challenge Successful", maka si
challenger dapet 50 points, dan si defender hilang pointnya semua
untuk problem tersebut.

> > Hanya geek yang suka. di binus sendiri aja peminatnya dikit sekali,
> > padahal mahasiswa computer science nya ribuan. FYI, PC ini sebenarnya
> > adalah mempertandingkan skills2 yang didapet dari courses yang ada di
> > universitas: kayak course Data Structure & Algorithms, course
> > Artificial Intelligence, Number Theory, Numerical Methods, Linear
> > Algebra, C Programming, etc...
>
> Hehhe.. ga usah maksa common people untuk menyukai hal2 teknis.. hal2 teknis
> itu high barrier to entry, cuma utk beberapa orang dan sebagian (besar)
> orang universitas itu cuma mau cari nilai, mana ada yang suka ama numerical
> methods, calculus, algebra.. beberapa dari mereka mungkin dapet A, tapi 'A'
> nya itu yaa cuma buat ujian aja. Saya rasa ini berlaku global, ga cuma di
> Indo.

Betul sekali, itulah yang terasa di kampus saya.
Tapi kalo orang yang dapet A itu mustinya memang jago.
Kalo ternyata tidak, berarti ada yang salah dengan penilaian di Universitasnya.


> Kalau suatu saat pemrograman menjadi populer di Indonesia, nanti tidak ada
> Indonesian Idol, adanya Indonesian Coder, yang jadi jurinya tokoh IT
> Indonesia kayak Pak BR, Pak Onno, dan mungkin kalo Pak Patriawan kalau sudah
> pulang dari SV.. :)

Untuk menjadi bintang coder, harus juara di TopCoder.
Kalau tidak, saya rasa belum bisa diakui sebagai bintang "coder" sungguhan.

Bintang coder sekarang adalah Petr, lihat di http://www.topcoder.com/tc
Bagian Top 10 kanan.... itulah Bintang Coder dunia.
Coba Googling nama mereka satu persatu, udah juara PC ribuan kali
sejak kecil. (hiperbola)

> > Kayaknya butuh banyak "seminar" tentang PC agar masyarakat indo
> > mengerti apa itu PC, dan mulai menyukai PC seperti menyukai game
> > tembak tembakan babi buta gitu. Kalao bisa seperti ini, semua hambatan
> > hilang deh.
>
> Ada banyak orang suka PC, tapi belum tentu suka pemrograman, dan beberapa
> orang yang suka pemrograman belum tentu suka computer science. Cuma creame
> de la creame yang mengetahui dyamic programming, memoization, automata dan
> sebagainya.

Oh, kalo suka PC, pasti nantinya akan menyukai semua computer science
stuffs, bahkan bakal menyesal karena tidak mempelajari mathematics
secara serius waktu kecil!

Menyukai disini dalam arti bisa "meng-appreciate" computer science
stuff, betapa susahnya itu dibuat, tapi belum tentu terjun ke semua
computer science stuffs karena teralu luas. Keliatannya kata
"mengagummi" lebih tepat disini :)

Mungkin yang mas Dicky maksud dengan "Ada banyak orang suka PC, tapi
belum tentu suka pemrograman" adalah yang suka PC hanya sebagai
Spectactor doank, tapi kalo disuruh koding, males? begitu kan? :D
Tapi kalo yang benar2 suka PC sampai ikut PC, sudah pasti dia suka
Pemogramman juga. (PC disini adalah Programming Contest!)

Felix Halim

m.c. cptrwn

unread,
May 21, 2006, 7:08:07 AM5/21/06
to teknologia
Felix Halim wrote:
> On 5/21/06, Dicky Arinal <dicky....@gmail.com> wrote:
> > On 5/21/06, Felix Halim <felix...@gmail.com> wrote:
> > > Untuk menentukan suatu program benar atau salah, Judge menggunakan
> > > Test Cases (just like how developers testing their program). Jadi juri
> > > biasanya punya Test Cases yang bisa mengeksploitasi bug di problem
> > > tersebut. Nah, jika peserta mengirim solusinya, si judge tinggal
> > > nge-run saja program dari si peserta, lalu dimasukkan input test cases
> > > dari juri. Jika semua test cases lolos, maka program peserta tersebut
> > > dianggap benar. Peserta mendapat nilai untuk problem tersebut.
> >
> > Bukan generate random cases yah?
>
> Biasanya Test Cases yang paling menjebak tidak tergenerate dari Random Cases :D
>
> Di TopCoder, ada satu session khusus namanya "Challenge Phase" dimana
> sesama coder bisa nge-challenge coding coder lain, dengan cara
> memberikan TestCase ke program orang yang mau di challenge... Kalo
> programnya outputnya ngaco, berarti "Challenge Successful", maka si
> challenger dapet 50 points, dan si defender hilang pointnya semua
> untuk problem tersebut.

btw thanks atas informasinya.

tadinya saya kira soalnya itu mirip2 membangun sistem sehingga bisa
coding lebih dari 5000-10,000 lines :))

Challenge coding orang lainya menggunakan apa ? boundary checking ?
berapa permutation ? apakah dinilai juga program yg paling efisien dan
memakan paling sedikit cpu cycle ?


>
> > > Hanya geek yang suka. di binus sendiri aja peminatnya dikit sekali,
> > > padahal mahasiswa computer science nya ribuan. FYI, PC ini sebenarnya
> > > adalah mempertandingkan skills2 yang didapet dari courses yang ada di
> > > universitas: kayak course Data Structure & Algorithms, course
> > > Artificial Intelligence, Number Theory, Numerical Methods, Linear
> > > Algebra, C Programming, etc...
> >
> > Hehhe.. ga usah maksa common people untuk menyukai hal2 teknis.. hal2 teknis
> > itu high barrier to entry, cuma utk beberapa orang dan sebagian (besar)
> > orang universitas itu cuma mau cari nilai, mana ada yang suka ama numerical
> > methods, calculus, algebra.. beberapa dari mereka mungkin dapet A, tapi 'A'
> > nya itu yaa cuma buat ujian aja. Saya rasa ini berlaku global, ga cuma di
> > Indo.
>
> Betul sekali, itulah yang terasa di kampus saya.
> Tapi kalo orang yang dapet A itu mustinya memang jago.
> Kalo ternyata tidak, berarti ada yang salah dengan penilaian di Universitasnya.
>
>
> > Kalau suatu saat pemrograman menjadi populer di Indonesia, nanti tidak ada
> > Indonesian Idol, adanya Indonesian Coder, yang jadi jurinya tokoh IT
> > Indonesia kayak Pak BR, Pak Onno, dan mungkin kalo Pak Patriawan kalau sudah
> > pulang dari SV.. :)
>
> Untuk menjadi bintang coder, harus juara di TopCoder.
> Kalau tidak, saya rasa belum bisa diakui sebagai bintang "coder" sungguhan.
>

mungkin kalo ada PC di Indonesia, dosenya felix seperti mark p.e.
kandidat yg bagus untuk jadi juri :)

> Oh, kalo suka PC, pasti nantinya akan menyukai semua computer science
> stuffs, bahkan bakal menyesal karena tidak mempelajari mathematics
> secara serius waktu kecil!
>
> Menyukai disini dalam arti bisa "meng-appreciate" computer science
> stuff, betapa susahnya itu dibuat, tapi belum tentu terjun ke semua
> computer science stuffs karena teralu luas. Keliatannya kata
> "mengagummi" lebih tepat disini :)

he he .. iya saya setuju point ini. point dimana CS sangat dan terlalu
luas itu benar sekali , sampai kadang2 saya mikir kenapa gak semua anak
sma saja terjun ke CS karena peluangnya limitless.

-mcp

Felix Halim

unread,
May 21, 2006, 10:05:23 AM5/21/06
to tekno...@googlegroups.com
On 5/21/06, m.c. cptrwn <cpat...@gmail.com> wrote:
> > Biasanya Test Cases yang paling menjebak tidak tergenerate dari Random Cases :D
> >
> > Di TopCoder, ada satu session khusus namanya "Challenge Phase" dimana
> > sesama coder bisa nge-challenge coding coder lain, dengan cara
> > memberikan TestCase ke program orang yang mau di challenge... Kalo
> > programnya outputnya ngaco, berarti "Challenge Successful", maka si
> > challenger dapet 50 points, dan si defender hilang pointnya semua
> > untuk problem tersebut.
>
> btw thanks atas informasinya.
>
> tadinya saya kira soalnya itu mirip2 membangun sistem sehingga bisa
> coding lebih dari 5000-10,000 lines :))

Ini mungkin PC untuk bagian Development Competition nya TopCoder. Tipe
PC ini berbeda dengan yang PC untuk bagian Algorithms Competition.
Untuk Development Competition bisa jadi 5000 sampe 10,000 baris. Mas
Sindunata Sudarmaji bisa ditanyain lebih lanjut... tapi untuk
Algorithms Competition rata2 paling 60 baris untuk 1 soal Algorithms
(biasanya sekali lomba TopCoder kasih 3 soal Algorithms untuk di solve
dalam 75 menit).


> Challenge coding orang lainya menggunakan apa ? boundary checking ?

Setiap soal Algorithm competition selalu ada input output format yang
diberitahu di problem statementnya.

Kita nge challenge code orang lain kalau:
1. keliatan bug yang jelas
contohnya, kurang pengecekan untuk kondisi tertentu. Maka kita
challenge dengan input yang tidak dihandle oleh orang tersebut,
otomatis programnya pasti outputnya ngaco :D biasanya justru banyak
sekali kondisi kondisi yang sangat kecil yang terlupakan oleh
programmer... (karena disepelekan). Disitulah kita bisa cari points,
challenge coder yang gak baca soal dengan teliti ato emang salah ketik
:D

2. orangnya salah make algorithm
kalo input rangenya misalkan n <= 1000. tapi di coding orang tersebut
ada begini:
for i = 1 .. n
for j = 1.. n
for k = 1..n
do abcdef;
Nah udah pasti gagal tuh algoritma, karena untuk n nya 1000 pasti dia
berjalan 1000,000,000 kali looping dan karena komputer TopCoder dalam
2 detik hanya bisa looping sebanyak 50 jutaan, yah pasti coding orang
tersebut berjalan lebih dari 2 detik (50 detik tepatnya). Maka,
challenge aja dengan input sebesar 1000, pasti programnya TimeLimit
(timelimit itu kalo program berjalan lebih lama dari 2 detik, maka
dianggap salah).

untuk solve problem yang inputnya n<=1000 harus pake algo yang lebih
kecil dari O(N^2).

3. Tricky cases
kalo kita punya testcase yang tricky abis, kita bisa gambling nge
challenge orang pake tricky cases kita :D


> berapa permutation ? apakah dinilai juga program yg paling efisien dan
> memakan paling sedikit cpu cycle ?

Asalkan untuk semua input yang dicobakan ke program peserta tersebut
semua berjalan kurang dari 2 detik & semuanya produce correct output,
maka programnya dianggap benar.


> > Untuk menjadi bintang coder, harus juara di TopCoder.
> > Kalau tidak, saya rasa belum bisa diakui sebagai bintang "coder" sungguhan.
>
> mungkin kalo ada PC di Indonesia, dosenya felix seperti mark p.e.
> kandidat yg bagus untuk jadi juri :)

saya cuman bisa coding, mana bisa jadi dosen :P

> > Menyukai disini dalam arti bisa "meng-appreciate" computer science
> > stuff, betapa susahnya itu dibuat, tapi belum tentu terjun ke semua
> > computer science stuffs karena teralu luas. Keliatannya kata
> > "mengagummi" lebih tepat disini :)
>
> he he .. iya saya setuju point ini. point dimana CS sangat dan terlalu
> luas itu benar sekali , sampai kadang2 saya mikir kenapa gak semua anak
> sma saja terjun ke CS karena peluangnya limitless.

Terutama kalo udah ngeliat program2 open-source yang canggih canggih..
pasti ada rasa kagum di hati ini. Tapi bagi yang bukan pencinta
pemograman mungkin program opensource yang canggih itu terlihat biasa
saja.

Btw, Lihat dibawah... kok gmail ngeproduce junk kayak gini yah?
Messagenya jadi dobel semua...

Felix Halim


> -mcp
>
> X-Google-Language: INDONESIAN,ASCII-7-bit
> Received: by 10.11.53.63 with SMTP id b63mr98873cwa;
> Sun, 21 May 2006 04:08:07 -0700 (PDT)
> X-Google-Token: XAd97wwAAABSzHH6i-zch1sxWkMFrU4i
> Received: from 71.135.47.95 by g10g2000cwb.googlegroups.com with HTTP;
> Sun, 21 May 2006 11:08:07 +0000 (UTC)
> From: "m.c. cptrwn" <cpat...@gmail.com>
> To: "teknologia" <tekno...@googlegroups.com>
> Subject: Re: Sharing tentang Programming Competition
> Date: Sun, 21 May 2006 11:08:07 -0000
> Message-ID: <1148209687.6...@g10g2000cwb.googlegroups.com>
> References: <1f3f3bb60605160620u5c5...@mail.gmail.com>
> <b880bfb40605160950o33c...@mail.gmail.com>
> <1f3f3bb60605200952l3ab...@mail.gmail.com>
> <1148144747.0...@i39g2000cwa.googlegroups.com>
> <1f3f3bb60605201957k1ab...@mail.gmail.com>
> <b880bfb40605202059y30b...@mail.gmail.com>
> <1f3f3bb60605202321xfa...@mail.gmail.com>
> User-Agent: G2/0.2
> X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3,gzip(gfe),gzip(gfe)
> Mime-Version: 1.0
> Content-Type: text/plain

m.c. cptrwn

unread,
May 21, 2006, 10:45:03 AM5/21/06
to teknologia
Felix Halim wrote:
> On 5/21/06, m.c. cptrwn <cpat...@gmail.com> wrote:
> > > Biasanya Test Cases yang paling menjebak tidak tergenerate dari Random Cases :D

>

Sip sip ... good sharing ! ada contoh tricky case ?

Btw gantian sharing :)) , kalau di qa cycle pada produk real time ,
tricky case ini bisa merupakan 'combination of events' yang tidak
dihandle oleh systems dan mengakibatkan chain of reactios.

Ada beberapa hal yang harus di-exploit oleh engineer :
1. task prioritization (semaphore)
2. cpu utilization
3. memory (leaks,consumptions,etc).

contoh yang paling sederhana adalah hanya jika menggunakan printf()
untuk logging messages. Dalam sistem apapun jika tidak ada fungsi
kontrol (buffered) untuk memprint log message, dijamin cpu utilisasi
bisa tinggi.

Dan jika cpu utilisasi tinggi, biasanya hanya task tertentu yg
menguasai cpu, sementara task lain yg bertugas untuk mengontrol
system,networks atau forwarding packet terhenti. Walhasil , triple
effects , networks down/router crash.


> > mungkin kalo ada PC di Indonesia, dosenya felix seperti mark p.e.
> > kandidat yg bagus untuk jadi juri :)
>
> saya cuman bisa coding, mana bisa jadi dosen :P

maksud saya jugdnya pak mark p.e. sang dosen binus (mudah2an felix
kenal) :)

>
> > > Menyukai disini dalam arti bisa "meng-appreciate" computer science
> > > stuff, betapa susahnya itu dibuat, tapi belum tentu terjun ke semua
> > > computer science stuffs karena teralu luas. Keliatannya kata
> > > "mengagummi" lebih tepat disini :)
> >
> > he he .. iya saya setuju point ini. point dimana CS sangat dan terlalu
> > luas itu benar sekali , sampai kadang2 saya mikir kenapa gak semua anak
> > sma saja terjun ke CS karena peluangnya limitless.
>
> Terutama kalo udah ngeliat program2 open-source yang canggih canggih..
> pasti ada rasa kagum di hati ini. Tapi bagi yang bukan pencinta
> pemograman mungkin program opensource yang canggih itu terlihat biasa
> saja.
>

Kalau dari pengalaman saya, kadang2 bukan hanya programer senior yang
bikin hasil produk bagus tapi yg terpenting adalah software engineering
management dan teamwork, dalam kasus ini saya merefer ke real time
produk yang punya 5-10 juta codes :)

-mcp

Dicky Arinal

unread,
May 24, 2006, 11:06:01 AM5/24/06
to tekno...@googlegroups.com
On 5/21/06, Felix Halim <felix...@gmail.com> wrote:
Oh, kalo suka PC, pasti nantinya akan menyukai semua computer science
stuffs, bahkan bakal menyesal karena tidak mempelajari mathematics
secara serius waktu kecil!

Hiihihi.. orang yang menyukai teknologi belum tentu menyukai matematika, apalagi memahaminya.

Penyuka teknologi itu ada beberapa level. Ada yang cuma suka produk-produknya aja, jadi kalau ada hp Nokia terbaru, pasti deh orang ini menjadi 1000 pembeli pertama. Tipe ini juga mengetahui banyak fasilitas-fasilitas yang ditawarkan oleh suatu produk, seperti GPRS, bluetooth,  dan juga melek dengan istilah dual core, GSM, CDMA, IMEI. Tapi jangan ditanya implementasi! Walaupun mengerti dual core, tapi jangan ditanya arsitektur mikroprosesor! Bacaannya biasanya majalah teknologi kalangan umum. Seperti majalah hp, majalah komputer..

Lalu ada juga seseorang yang bisa programming, tapi tidak melek matematika, karena programmer sekarang memang tidak harus tau computer science. Mau ngompile? Download aja compiler, nggak usah belajar teori kompilasi! Mau generate bilangan random? Pake aja rand() --kalau di C-- nggak usah ngerti pseudorandom. Don't reinvent the wheel eh? Sebagian besar developer berada di sini, termasuk saya mungkin :)

Level paling atas ya level nya Mas Felix, kalau kerja di Microsoft ya di bagian MSR (Microsoft Research) :) ...

Menyukai disini dalam arti bisa "meng-appreciate" computer science
stuff, betapa susahnya itu dibuat, tapi belum tentu terjun ke semua
computer science stuffs karena teralu luas. Keliatannya kata
"mengagummi" lebih tepat disini :)

Semua orang kagum melihat kecanggihan komputer. Tapi saya yakin, yang dikagumi bukanlah computer science stuff, tapi "sesuatu yang lain". Beberapa hari yang lalu seorang teman berkata begini "Hebat ya, manusia bisa membuat komputer padahal masih zaman dulu" (maksudnya komputer ENIAC pada WWII). Yang dia kagumi adalah bagaimana orang dengan teknologi tahun 1940-an bisa membuat komputer. Jelas sekali bahwa temen saya ini tidak mengerti computer science karena membuat ENIAC tidak lebih susah daripada membuat Intel Pentium (dengan teknologi sekarang tentunya). Saya tau darimana kekaguman itu berasal. Orang yang tidak mengerti computer science pasti akan mengaitkan teknologi dengan hardware. Jadi, untuk membuat komputer, seseorang harus membuat IC sampai sepersekian nano seperti current PC, bagaimana mungkin pada zaman WWII orang bisa membuat komputer kalau begini? Kalau begini kejadiannya saya juga kagum! Ini keliru, komputer adalah sesuatu yang hardware-agnostic, yang penting itu arsitekturnya, bukan bagaimana mengimplementasikan arsitektur. Gerbang AND atau OR nggak harus pakai transistor silikon! Kalau pada perang dunia II belum ada transistor, pake aja 'transistor' tabung, nggak ada yang aneh di sini.

Mungkin yang mas Dicky maksud dengan "Ada banyak orang suka PC, tapi
belum tentu suka pemrograman" adalah yang suka PC hanya sebagai
Spectactor doank, tapi kalo disuruh koding, males? begitu kan? :D

Dilemma yang sering dialami oleh mahasiswa fakultas ilmu komputer.. dia suka komputer (gaming, editing, deface situs) dan berniat menjadi pakar komputer, pas bertemu dengan koding, langsung deh.. salah jurusan.

regards,

Dicky Arinal

Reply all
Reply to author
Forward
0 new messages