Hasil Test Aptitude Pemrograman Mhs tahun pertama di UK

Saeed Dehnadi dan Richard Bornat (paper pdf) melakukan sebuah tes apititude pemrograman:

Learning to program is notoriously difficult. A substantial minority of students fails in every introductory programming course in every UK university. Despite heroic academic effort, the proportion has increased rather than decreased over the years. Despite a great deal of research into teaching methods and student responses, we have no idea of the cause.

It has long been suspected that some people have a natural aptitude for programming, but until now there has been no psychological test which could detect it. Programming ability is not known to be correlated with age, with sex, or with educational attainment; nor has it been found to be correlated with any of the aptitudes measured in conventional intelligence or problem-solving-ability tests.

We have found a test for programming aptitude, of which we give details. We can predict success or failure even before students have had any contact with any programming language with very high accuracy, and by testing with the same instrument after a few weeks of exposure, with extreme accuracy. We present experimental evidence to support our claim. We point out that programming teaching is useless for those who are bound to fail and pointless for those who are certain to succeed.

Berdasarkan hasil pengujian mereka, terdapat tiga kelompok dalam kelas pemrograman,

  1. Kelompok yang ingin belajar lebih cepat
  2. Kelompok yang mengatur diri dan berusaha supaya lulus
  3. Kelompok yang belum memahami ide dasar pemrograman (sampai perkuliah selesai)

Tampaknya kesalahan bukan pada dosen (baik dari material maupun cara mengajarnya):

The cause isn’t to be found in inappropriate teaching materials or methods either. Essentially, the computer science community has tried everything (see section 2) and nothing works. Graphics, artificial intelligence, logic programming languages, OOP, C, C++, PROLOG, Miranda: you name it, we’ve tried it. We’ve tried conventional teaching, lab-based learning by discovery and remedial classes. We’ve tried enthusiasm and cold- eyed logical clarity. Nothing makes a difference. Even the UK’s attempt in the 1980s to teach the whole UK population to program on the BBC Micro ran into the sand.

Bagaimana dengan mahasiswa kita ????

Paradigma desain baru - Aplikasi “user-driven”

Program-program untuk tugas-tugas engineering dan saintifik yang rumit biasa menghadapi masalah dalam hal menampilkan hasil-hasil grafik yang banyak. Keterbatasan ruang ’screen’ dan kadang persyaratan berlawanan dari pemakai yang berbeda merupakan penyebab debat kusir antara desainer dan pemakai. Akan tetapi sumber utama konflik ini bukan pada level desain interface, melainkan pada prinsip dasar dari keluaran grafis (graphical output) saat ini: pemakai dapat mengubah beberapa views dan details, tapi secara umum ‘output view’ didefinisikan dan dipastikan secara absolut oleh pengembang.

Sergey Andreyev , setelah riset beberapa tahun, mengembangkan sebuah algoritma untuk mengatasi masalah tersebut di atas, yang dengan kata lain mengizinkan perubahan dari aplikasi ‘designer driven‘ menjadi ‘user-driven‘. Aplikasi tipe demikian dimana pemakai dapat menentukan apa, kapan dan bagaimana menampilkan pada ’screen’, merupakan impian para saintis dan engineer yang bekerja pada analisis tugas-tugas yang sangat rumit.

Paradidma baru berbasiskan pada grafik yang dapat dipindah-pindah dan di-resizable, dan tipe grafik yang demikian dapat digunakan secara luas tidak hanya pada aplikasi-aplikas saintifik dan engineering.

Top 10 Kemampuan/skills komputer akan mati

Baru-baru ini majalah ComputerWorld menampilkan daftar 10 kemampuan/skills bidang komputer akan mati:

  1. Kemampuan dalam pemrograman Bahasa Cobol
  2. Kemampuan dalam ‘non-relational DBMS’
  3. Kemampuan dalam ‘non-ip network’
  4. CC-mail
  5. Kemampuan dalam aplikasi ‘coldfusion”
  6. Kemampuan dalam bahasa pemrograman C
  7. Kemampuan dalam bahasa pemrograman Powerbuilder
  8. Certified NetWare Engineers
  9. Kemampuan dalam PC-Network Administrators
  10. Kemampuan pada OS/2

Detail alasan mengapa dapat dilihat di sini (a list of 10 computer skills that are largely irrelevant when compared to other more popular technologies)

Bagaimana developer menguji Software Opensource

Andy Zaidman et.al, dalam papernya mengemukakan bagaimana developer menguji software-software open-source. Sistem rekayasa perangkat lunak (SW-Engineering) merupakan sebuah aktivitas multidisplin, dimana sejumlah “artifacts” dikreasi dan dimaintain, secara sinkron. Dalam paper mereka diselidiki apakah kode produksi dan test-test yang terkait berevolusi juga, melalui eksplorasi sistem versi proyek, code coverage reports dan size-metrics. Dari hasil pengujian tiga open source sebagai case studies diperoleh hasil bahwa a) aktivitas-aktivitas testing biasanya dimulai berikutnya selama waktu hidup (lifetime) dan lebih terfasekan, dan b) tidak terobservasi adanya peningkatan aktivitas testing sebelum ada releases. Bahkan, teramati bahwa c) terdapat perbedaan yang besar pada tingkat-tingkat “test coverage” ketimbang proporsi kode test yang ada.

Lebih detail silahkan download paper (pdf)

Encryption Links from geschonneck.com

Encryption

  • RFC 1847 Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted
  • RFC2311 S/MIME Version 2 Message Specification
  • RFC2312 S/MIME Version 2 Certificate Handling

 

  • S/MIME Working Group
  • S/MIME Interoperability Center (RSA)
  • S/MIME Interoperability Matrix
  • S/MIME and PGP/MIME
  • SET specs
  • Transport Layer Security TLS
  • OpenPGP
  • PKI linklist at PKI-Page.org
  • SSL-Check!
  • Cryptography and Microsoft Public Key Infrastructure with Windows 2000
  • MS Windows 2000 Public Key Infrastructure Whitepaper
  • PKI Deployment Information page
  • PKI-COORD PKI Coordination for Europe
  • CA-Cookbooks
  • X.509
  • smart cards
  • infos about X.500, LDAP and directory servers
  • SSL/X.509 tools
  • Crypto misc
  • German Law
  • PKI misc
  • Aufwand beim Betrieb einer Uni-CA
  • PGP Public Key Server
  • StreamIt: Bahasa Pemrograman baru yang mudah untuk mesin multicore

    Dengan perkembangan teknologi mikroprosessor, kita jumpai sekarang terdapat PC, Laptop maupun Gagdet memiliki prosessor lebih dari 1 atau istilahnya multicore, ada yang dual-core atau quad-core. Pada saat ini mesin dengan multicore tersebut lebih banyak digunakan untuk aplikasi-aplikasi yang memang memerlukan banyak proses komputasi, seperti video processing dan gaming. Namun, pada dasarnya mesin multicore ini merupakan superkomputer skals-kecil. Agar kita dapat memanfaatkan keuntungan dari kekuatan komputasinya, software atau program harus dikoding bagi mesin tersebut harus berbasis algoritma paralel (pemrograman paralel). Dan para pakar yakin, apabila pemrograman paralel tidak dapat dibuat lebih mudah, progress komputasi akan menjadi tersendat-sendat dan bahkan terhenti.

    Peneliti dari MIT memperhatikan hal ini. Dan mereka telah berhasil mendesain sebuah bahasa pemograman dan compiler yang memberikan kemudahan dalam pemrograman paralel, khususnya bagi mesin-mesin mutlicore. Bahasa Pemrograman dan Compiler disebut StreamIt , dikembangkan oleh Saman Amarasinghe, professor teknik elektro dan ilmu komputer MIT.

    StreamIt saat ini berjalan pada mesin multicore khusus yang dikembangkan di MIT. Pada musim panas tahun ini diharapkan dapat berjalan pada chip-komersial dari IBM, Sony, dan Toshiba.

    Pada mesin single core, kode software (tasks)akan berjalan sekuensial; pada mesin multicore task-task akan dipecah diantara core-core. Jika task yang berbeda perlu mengakses ‘chunk’ memori yang sama, task tersebut harus bekerja bersama-sama untuk mensinkronisasi akses-akses.

    Debugging sekuesial program adalah mudah. Pada sistem paralel proses debug cukup kompleks dan sulit, karena sifat-nya menjadi probabilistik. Setiap kali program berjalan, multicore mengeksekusi tugasnya secara independent, memungkinkan terjadinya jutaan orde eksekusi yang mungkin bagi program.

    Data flow, menurut Amaransinghe, merupakan solusinya. Pada data flow, data di stream secara sekuensial melalui sebuah ’sort’ pipeline fungsi-fungsi. Ketika data mengalir compiler akan melihat fungsi mana yang independen. Dengan demikian, compiler dapat memisahkan task-task pada core yang berbeda, tanpa khawatir bahwa task-task akan berinterferensi satu sama lain atau menempati ruang memori yang sama.

    Programmer hanya perlu menulis program yang beroperasi secara sekuensial. Compiler yang akan melihat seluruh interaksi-interaksi yang perlu dilakukan, berdasarkan kode yang ditulis programmer, dan mengalokasikan instruksi-instruksi yang tepat.

    Lihat lebih jauh tentang StreamIt
    StreamIt is a programming language and a compilation infrastructure, specifically engineered for modern streaming systems. It is designed to facilitate the programming of large streaming applications, as well as their efficient and effective mapping to a wide variety of target architectures, including commercial-off-the-shelf uniprocessors, multicore architectures, and clusters of workstations.

    Komentar:

    It is a sound idea based on well-known concepts, says Ras Bodik, a professor of computer science at the University of California, Berkeley. “If you want programmers who are not experts in parallelism to be productive, if you want them to effectively write programs, you want to give them a language like StreamIt,” he says. However, Bodik suspects that software engineers will need to rely on a hierarchy of tools that operate at different levels. For instance, transactional memory, which allows numerous tasks to share the same memory at the same time, could operate behind the scenes, helping maximize StreamIt’s
    potential. (See
    The Trouble with Multi-Core Computers.”)

    Manajemen Data dengan Spreadsheet Logical

    Lebih dari 20 tahun spreadsheet, seperti excel, menjadi tool penting di suatu organisasi atau institusi. Namun desain spreadsheet yang ada masih terbatas, terutama jika menyangkut komputasi matematika. Kebanyakan spreadsheet tidak didesain dengan “formula logikal”.

    Ilmuwan komputer dari Stanford telah berhasil mengembangkan prototipe spreadsheet dengan kemampuan matematik logik (lihat ini a logical spreadsheet using logic instead of math ) untuk membantu kita dalam hal manajemen data dengan suatu cara yang innovatif. US-Army ingin menggunakannya untuk mengorganisasikan penempatan dan pelatihan tentara. Dan Stanford telah menggunakan untuk menjadualkan perkuliahan, event-event dan ruangan. Langkah selanjutnya adalah mengintegrasikan teknologi ini pada web, guna menggantikan form-form yang biasa kita isi melaluu “websheets”.

    Penelitian teknologi ini telah dilakukan sejak 2001, dibawah pimpinan Prof. Michael Genesereth , dari departement ilmu komputer Universitas Stanford, dan bersama Michael Kassoff, kandidat doktor pada grup risetnya (Logical Spreadsheets project).

    Berikut dua catatan penting dari Genesereth mengenai proyek ini.

    • “There are many cases where traditional spreadsheets are just not sufficient. Why not have a spreadsheet that looks just like a regular spreadsheet except it has the ability to encode and use logical formulas? That’s what you can’t do with Excel in any way today.”

    • Genesereth gives the example of trying to use a logical spreadsheet to plan a meal. “You enter the main course, and let the spreadsheet suggest greens and carbohydrates that are gastronomically compatible and satisfy nutritional requirements,” he says. “Or you can do it in the other order.” Traditional spreadsheets fail in such applications because they are more rigid and cannot represent logical constraints.

    Lebih detail lihat link berikut:
    http://www.physorg.com/news96729652.html
    http://logic.stanford.edu/spreadsheet/
    http://logic.stanford.edu/people/genesereth/

    Komputasi “general-purpose” pada Substrate Jaringan Semantik

    By Marko A. R

    Artikelnya membahas seuah model komputasi “general-purpose” pada substrate jaringan semantik. Konsep-konsep yang disajikan dapat diaplikasikan pada berbagai jaringan semantik. Akan tetapi, karena standard dan infrastruktur teknologi ditujukan pada penelitian web semantik, artikelnya lebih diarah dari sudut pandang web semantik. Pada model komputasi yang diusulkan, interface pemrograman aplikasi, program run-time, dan virtual machine komputasi direpresentasikan dalam RDF. Implementasi konsep-konsep menciptkan sebuah paradigma komputasi praktis pada layer representasi web semantik.

    paper download here pdf

    Programming Language LUA

    Lua is a powerful light-weight programming language designed for extending applications. Lua is also frequently used as a general-purpose, stand-alone language. Lua is free software.

    Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

    A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua’s meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways. Extensible semantics is a distinguishing feature of Lua.

    Lua is a language engine that you can embed into your application. This means that, besides syntax and semantics, Lua has an API that allows the application to exchange data with Lua programs and also to extend Lua with C functions. In this sense, Lua can be regarded as a language framework for building domain-specific languages.

    Lua is implemented as a small library of C functions, written in ANSI C, and compiles unmodified in all known platforms. The implementation goals are simplicity, efficiency, portability, and low embedding cost. The result is a fast language engine with small footprint, making it ideal in embedded systems too.

    Lua is designed and implemented by a team at PUC-Rio, the Pontifical Catholic University of Rio de Janeiro in Brazil. Lua was born and raised at Tecgraf, the Computer Graphics Technology Group of PUC-Rio, and is now housed at Lablua. Both Tecgraf and Lablua are laboratories of the Department of Computer Science.

    ‘Lua’ means ‘moon’ in Portuguese and is pronounced LOO-ah.

    Here are brief descriptions of some projects around the world that use Lua.

    see more http://www.lua.org/uses.html

    Practical Functional Database: Nix and NixOS

    Nix is a purely functional package manager. It allows multiple versions of a package to be installed side-by-side, ensures that dependency specifications are complete, supports atomic upgrades and rollbacks, allows non-root users to install software, and has many other features.

    Nix is a purely functional package manager. This means that it treats packages like values in purely functional programming languages such as Haskell — they are built by functions that don’t have side-effects, and they never change after they have been built. Nix stores packages in the Nix store, usually the directory /nix/store, where each package has its own unique subdirectory such as

    /nix/store/r8vvq9kq18pz08v249h8my6r9vs7s0n3-firefox-2.0.0.1/

    where r8vvq9kq… is a unique identifier for the package that captures all its dependencies (it’s a cryptographic hash of the package’s build dependency graph). This enables many powerful features.

    It is the basis of the NixOS Linux distribution, but it can be used equally well under other Unix systems.
    NixOS is a Linux distribution based on Nix, a purely functional package management system. NixOS is an experiment to see if we can build an operating system in which software packages, configuration files, boot scripts and the like are all managaed in a purely functional way, that is, they are all built by deterministic functions and they never change after they have been built. Such an operating system should have all the nice characteristics that the Nix package manager has:

    1. The entire system — kernel, system services, configuration files, etc. — is built by a Nix expression in a deterministic and repeatable way.
    2. Since configuration changes are non-destructive (they don’t overwrite existing files), you can easily roll back to a previous configuration. For instance, the Grub boot menu in NixOS allows the user to boot into any previous system configuration that hasn’t been garbage collected yet. This is very nice if something goes wrong.
    3. Upgrading a configuration is as safe as installing from scratch, since the realisation of a configuration is not stateful. This is a result of being purely functional.
    4. Multi-user package management — any user can install software through the same mechanisms that the administrator uses. This is not the case for most package managers such as RPM.

    Furthermore,

    • NixOS allows us to verify that Nix packages are really pure. Nix prevents undeclared dependencies between packages in the Nix store, but when you run Nix on an existing OS such as SUSE Linux, Nix cannot prevent a build script from (say) calling programs in /bin. If there is no /bin, such a build script will fail.

    Here are links to: